我正在尝试使用自定义选项卡活动让用户在我的应用程序中进行小型导航。
意图过滤器没问题,启动器活动没问题,浏览器也没问题。但是浏览器选项卡是自动创建的,我的活动被破坏了,我失去了所有的状态。
为什么?这是代码
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
this.caller = savedInstanceState.getString("caller", null);
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
outState.putString("caller", this.caller);
super.onSaveInstanceState(outState);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getBooleanExtra("starting", false)) {
this.caller = getIntent().getStringExtra("caller"); //THIS IS ALWAYS != NULL, i've debugged and check
Intent intent = new CustomTabsIntent.Builder().setUrlBarHidingEnabled(true).setShowTitle(false).build().intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY).setData(Uri.parse(URL_BUILDER.buildLoginUrl()));
PendingIntent pi = PendingIntent.getActivity(this, 123, intent, PendingIntent.FLAG_IMMUTABLE);
if (hasChrome())
intent.setPackage("com.android.chrome");
this.customTabLauncher.launch(new IntentSenderRequest.Builder(pi).setFillInIntent(intent).build());
} else Sytem.out.println(this.caller);
}
这是发生的事情,从一些活动开始,我在传递意图中的“开始”和“调用者”字段上方开始这个活动,这工作正常我已经调试和检查过......但没有我在任何地方调用完成,这个活动被关闭,然后我失去了返回 customtabs 的所有信息
在我的清单中
<activity
android:name="com.tomatedigital.androidutils.CustomTab"
android:exported="true"
tools:node="merge">
<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:host="cct.face.otarios"
android:scheme="test" />
</intent-filter>
</activity>
我错过了什么?在调试会话中,我看到了onSaveInstanceState
被调用,但恢复从未被调用。