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