通过Web启动本地App并利用Schema响应事务
2017-12-22 本文已影响0人
胖头是真的胖
首页明确需求:
通过App分享出去的视频页面中有照做按钮,点击照做按钮之后如果本地安装了App则响应事件,启动App并过去视频Json然后进入选择本地素材的界面
分享出的界面如下:
image.png
遇到的主要问题是:
本地如何响应分享出去界面的点击事件
如何解决:
1.打开AndroidManifest.xml
2.在想响应的界面下加入
<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)) {
//进入详情界面
······
} else if ("simulate".equals(action)) {
//进入照做界面
······
}
} else {
//正常操作
······
}
} catch (Exception e){
}
在这个界面你已经得到你想要的东西了,App已经成功的被唤醒
但是我在这里遇到一个Bug到现在都没有解决掉
这个bug是这样的:
当我点击照做按钮成功唤醒App后,home
回到分享出去的界面,再次点击照做按钮这时,没有走SplashActivity,而是直接启动了App 相当于直接的界面OnResume了,这就很尴尬,我不能再次走我SplashActivity的代码了。
如果有高手知道这个bug怎么解决,写在评论里,我不胜感激!~
ps:
之前在为了解决项目release打包后,进入任意界面Home,再次点击app重新启动的问题
在SplashActivity的OnCreate中加了如下代码
// 避免从桌面启动程序后,会重新实例化入口类的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;
}
}
}
这会不会是导致问题的关键所在的,不说我了我去试试~