通过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;
        }
    }
}

这会不会是导致问题的关键所在的,不说我了我去试试~

上一篇下一篇

猜你喜欢

热点阅读