首頁(yè)明確需求:
通過(guò)App分享出去的視頻頁(yè)面中有照做按鈕榛斯,點(diǎn)擊照做按鈕之后如果本地安裝了App則響應(yīng)事件飒筑,啟動(dòng)App并過(guò)去視頻Json然后進(jìn)入選擇本地素材的界面
分享出的界面如下:
遇到的主要問(wèn)題是:
本地如何響應(yīng)分享出去界面的點(diǎn)擊事件
如何解決:
1.打開(kāi)AndroidManifest.xml
2.在想響應(yīng)的界面下加入
<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="xxx" />
</intent-filter>
如
<activity
android:name=".ui.main.activity.SplashActivity"
android:screenOrientation="portrait"
android:theme="@style/SplashAppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</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="xxx" />
</intent-filter>
</activity>
3.在SplashActivity中加入
try {
Uri uri = getIntent().getData();
if (uri != null) {
String host = uri.getHost();
String dataString = getIntent().getDataString();
filmId = uri.getQueryParameter("filmId");
action = uri.getQueryParameter("action");
if ("play".equals(action)) {
//進(jìn)入詳情界面
······
} else if ("simulate".equals(action)) {
//進(jìn)入照做界面
······
}
} else {
//正常操作
······
}
} catch (Exception e){
}
在這個(gè)界面你已經(jīng)得到你想要的東西了捕儒,App已經(jīng)成功的被喚醒
但是我在這里遇到一個(gè)Bug到現(xiàn)在都沒(méi)有解決掉
這個(gè)bug是這樣的:
當(dāng)我點(diǎn)擊照做按鈕成功喚醒App后拾碌,home
回到分享出去的界面咽白,再次點(diǎn)擊照做按鈕這時(shí),沒(méi)有走SplashActivity膀曾,而是直接啟動(dòng)了App 相當(dāng)于直接的界面OnResume了酒唉,這就很尷尬叁熔,我不能再次走我SplashActivity的代碼了委乌。
如果有高手知道這個(gè)bug怎么解決,寫在評(píng)論里荣回,我不勝感激遭贸!~
ps:
之前在為了解決項(xiàng)目release打包后,進(jìn)入任意界面Home心软,再次點(diǎn)擊app重新啟動(dòng)的問(wèn)題
在SplashActivity的OnCreate中加了如下代碼
// 避免從桌面啟動(dòng)程序后壕吹,會(huì)重新實(shí)例化入口類的activity
if (!this.isTaskRoot()) {
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish();
return;
}
}
}
這會(huì)不會(huì)是導(dǎo)致問(wèn)題的關(guān)鍵所在的除秀,不說(shuō)我了我去試試~