美文网首页
魅族推送 原来我没理清楚 URI/IntentURI 无法打开A

魅族推送 原来我没理清楚 URI/IntentURI 无法打开A

作者: 一个冬季 | 来源:发表于2020-12-23 14:39 被阅读0次
参考文章

android 网页中打开 app指定页面

魅族推送版本: com.meizu.flyme.internet:push-internal:4.0.2
魅族手机版本:Flyme 6.3.5.0A
android版本:5.1
在App被杀死的情况下,华为、小米 都可以通过在后台设置IntentURI,收到推送通知,点击后就可以打开指定APP页面,但是在魅族就不行,后面我发现魅族要的是URI,不是IntentURI
IntentURI结构

intent://com.test.mall/intentparse?#Intent;scheme=wjPush;launchFlags=0x14000000;S.type=goods;S.jsonString=%7B%22goods_id%22%3A111%7D;end

如果采用IntengURI魅族错误提示信息如下

E/AbstractMessageHandler: Click message StartActivity error No Activity found to handle Intent { act=android.intent.action.VIEW dat=intent://com.test.mall/intentparse? flg=0x10000000 (has extras) }

我尝试将IntentURI结构采用如下方式打开,是可行的

String intentString = "intent://com.test.mall/intentparse?#Intent;scheme=wjPush;launchFlags=0x14000000;S.type=goods;S.jsonString=%7B%22goods_id%22%3A111%7D;end";
Intent intent = Intent.parseUri(intentString,0);
startActivity(intent);

后面我还发现,点击了魅族消息通知,onNotificationClicked 事件将会被回调,所以我目前的解决办法是

 /**
     * 当用户点击通知栏消息后会在此方法回调
     *
     * @param context
     * @param mzPushMessage
     */
    @Override
    public void onNotificationClicked(Context context, MzPushMessage mzPushMessage) {
        if (mzPushMessage != null) {
            String intentString = mzPushMessage.getSelfDefineContentString();
            if (!TextUtils.isEmpty(intentString)) {
                try {
                    Intent intent = Intent.parseUri(intentString,0);
                    context.startActivity(intent);
                } catch (URISyntaxException e) {
                    e.printStackTrace();
                }
            }
        }
    }

希望魅族可以解决一下通过IntentURI点击可以跳转的方式

第二种方案

所有的推送都采用URI方式,都是可以进行调用到的,就可以不用理会魅族的onNotificationClicked方法

 //不带参数 wjPush://com.test.mall/intentparse
 //带参数 wjPush://com.test.mall/intentparse?type=goods&jsonString=%7B%22goods_id%22%3A131%7D
 //带参数 {scheme}://{host}{path}?{参数}

 //接收参数
 Uri uri = intent.getData();
 if (uri != null) {
   String type = uri.getQueryParameter("type");
   String jsonObjectString = uri.getQueryParameter("jsonString");
}

        <activity
            android:name="com.test.mall.IntentParseActivity"
            android:exported="true"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:theme="@style/NoFullScreen.BackSplash.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <!--表示该页面可以被隐式调用,必须加上该项-->
                <category android:name="android.intent.category.DEFAULT" />
                <!--协议部分-->
                <data
                    android:host="com.test.mall"
                    android:path="/intentparse"
                    android:scheme="wjPush" />
            </intent-filter>
        </activity>

相关文章

网友评论

      本文标题:魅族推送 原来我没理清楚 URI/IntentURI 无法打开A

      本文链接:https://www.haomeiwen.com/subject/vryenktx.html