美文网首页android经验总结
android坑总结(持续更新中...)

android坑总结(持续更新中...)

作者: next_discover | 来源:发表于2016-08-12 15:32 被阅读65次

    1.

    今天公司让做一个从微信里面的h5点击唤醒本地安装的我们的app,并且要跳转到指定页面,我写好了代码之后,在其他浏览器还是app中点击都可以跳到我们的app,结果在微信中就是不行,邪了门了。

    我就是找不到原因,配合写h5的哥们也很头疼,我就分析原因:

    微信内置的X5内核的qq浏览器,但是外部的qq x5浏览器可以调起我们的app,微信内部浏览器就是不行,TMD,问题出在哪里呢,代码也写了

    <!--要想在别的App上能成功调起App,必须添加intent过滤器-->
    <!--Open links like scheme://host/?…-->
    <intent-filter>    
            <action android:name="android.intent.action.VIEW"/>    
            <category android:name="android.intent.category.DEFAULT"/>    
            <category android:name="android.intent.category.BROWSABLE"/>    
          <!--协议部分,随便设置-->    
          <data        android:host="test.uri.activity"        android:scheme="myactivity"/>
    </intent-filter>
    
    
    <!--在其他应用里调用也可以,写法是这样的:-->
        Uri uri = Uri.parse("myactivity://test.uri.activity?action=1&shops_id=4");
        Intent intent=new Intent(Intent.ACTION_VIEW,uri);
        startActivity(intent);
    

    貌似写的也没有错啊,结果就行不行,我又去查资料,

    结果竟然是这样的:

    每个接入微信的应用都需要上他的[开放平台]上注册申请,然后微信会分配一个AppID,这个AppID就是每个接入微信的第三方应用的标识;而接入微信时,需要你把此AppID作为接入应用的URL Scheme,也就是答案中说的自定协议,那么微信就可以通过检查这个AppID为值的URL Scheme在本机中是否已经注册(通过 UIApplication类中的 canOpenURL 方法),就可以判断出当前设备是否有安装相应的第三方应用了。

    Uri uri = Uri.parse("myactivity://test.uri.activity?action=1&shops_id=4");
    把myactivity也就是schema换成你微信申请的appid就可以跳转了。
    
    又踩了一个坑,使用okhttp的时候,经常会出现一个错误就是:cache is closed。原来是我设置了拦截器

    okhttp日志拦截器 设置这个拦截器缓存文件夹里就会出现那个文件,不知道这个文件怎么影响到清除数据后有的手机在运行会出现java.lang.IllegalStateException: cache is closed异常。目前我在上线前去掉此拦截器,没找到很好解决方案。

    看到这篇文章我才解决了这个问题http://blog.csdn.net/dongbeitcy/article/details/77679822

    相关文章

      网友评论

        本文标题:android坑总结(持续更新中...)

        本文链接:https://www.haomeiwen.com/subject/vpqesttx.html