Android如何從外部跳進App,Android跳進App
解決這個問題有兩個作用:
1、不用開啟App直接進入某頁面
2、實現App分享到外部,同時由外部進入App的閉環。
這個話題可以分兩方面來講,一方面是從進入App,另一方面是從網頁進入App。
咱們拿http://my.oschina.net/liucundong/blog/354029當例子來講一下
主要通過scheme、host、path、pathPrefix等data資訊來區分
兩個方案都需要給跳轉到的Activity加入intent-filter資訊,例如
<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:scheme="cundong" android:host="splash"/>
</intent-filter>
首先我們來講端進入App,情境:從App分享內容到,再從直接開啟App。
第一步,註冊公眾平台,相關公司資訊,下載連結,Logo等 都填寫完畢
第二步,分享時使用WXAppExtendObject,把連結url賦值給extInfo
第三步,在IWXAPIEventHandler介面的onReq方法的req.getType()=ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX時,發起你的跳轉
第四步,跳轉時需要資料,資料從哪裡來,從WXEntryActivity類中onCreate方法的getIntent對象裡來
從進入App就這樣結束了。
-------------------我是分割線------------------------
接著來講網頁端,由於webView的限制,如、微博等都採用這個控制項,所以只能分享到網頁,再進入App。
原理如下:
<div>
<a id="J-call-app" href="javascript:;" class="label">立即開啟>></a>
<input id="J-download-app" type="hidden" name="storeurl" value="http://apk.hiapk.com/appinfo/com.tmall.wireless">
</div>
<script>
(function(){
var ua = navigator.userAgent.toLowerCase();
var t;
var url=document.location;
var config = {
/*scheme:必須*/
scheme_IOS: 'cundong://',
scheme_Adr: 'cundong://splash',
download_url: document.getElementById('J-download-app').value,
timeout: 600
};
function openclient() {
var startTime = Date.now();
var ifr = document.createElement('iframe');
//alert(config.scheme_Adr);
ifr.src = ua.indexOf('os') > 0 ? config.scheme_IOS : config.scheme_Adr;
ifr.style.display = 'none';
document.body.appendChild(ifr);
var t = setTimeout(function() {
var endTime = Date.now();
if (!startTime || endTime - startTime < config.timeout -200) {
window.location = config.download_url;
} else {
window.location.href=ifr.src.replace("http://","cundong://");;
}
}, config.timeout);
window.onblur = function() {
clearTimeout(t);
}
}
window.addEventListener("DOMContentLoaded", function(){
document.getElementById("J-call-app").addEventListener('click',openclient,false);
}, false);
})()
</script>
點擊開啟四個字後,執行一個js,在限制時間內,如果可以開啟App則開啟,否則進入下載頁
解決這個問題的基本思路就是這樣,歡迎大家交流探討!