处理h5打开app导致的死循环
chenliang7218 opened this issue · 5 comments
chenliang7218 commented
我自定义了一个activity来处理h5打开app
<activity
android:name=".activity.RouterActivity"
android:theme="@android:style/Theme.NoDisplay">
<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="swapshop" />
</intent-filter>
</activity>
public class RouterActivity extends Activity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri uri = getIntent().getData();
if (uri != null) {
Router.build( uri).go(this, new RouteCallback() {
@Override
public void callback(RouteResult state, Uri uri, String message) {
if (state != RouteResult.SUCCEED) {
IMUIHelper.showToast(RouterActivity.this, "该版本不支持,请升级版本");
}
}
});
}
finish();
}
}
当router处理没有定义的URI时,会一直调用RouterActivity来处理
怎么解决这个问题?
chenenyu commented
反馈已收到,你是怎么调用导致死循环的?
chenenyu commented
uri只有scheme,没有host?
chenliang7218 commented
uri 有scheme 和host。
以上面定义的RouterActivity为接受h5打开app的意图.
String uri = "swapshop://platformapi/xxxx";
Router.build(uri).go(mContext);
如果uri没有定义对应activity的话,就会不停打开RouterActivity,进入死循环
chenenyu commented
已知晓,如果你不想使用隐式匹配功能,可以干掉这个匹配器 使用Router.clearMatcher()
清空,然后添加其它的匹配器Router.registerMatcher(xxx)
,包括DirectMatcher
, SchemeMatcher
,BrowserMatcher
,可以参考MatcherRegistry
这个类。 我想想有没有改进方式,感谢反馈。
chenenyu commented
Uri uri = getIntent().getData();
if (uri != null && !"swapshop".equals(uri.toString())) {
Router.build(uri).go(this);
}
把你的scheme过滤掉就行,这种方式最简单。