1

カスタム タブ アクティビティを使用して、ユーザーがアプリ内で小さなナビゲーションを実行できるようにしようとしています。

インテント フィルターは問題ありません。スターター アクティビティも問題ありません。ブラウザも問題ありません。しかし、ブラウザタブは自動的に作成され、アクティビティが破棄され、すべての状態が失われます。

なぜ?ここにコードがあります

@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);

}

ここで何が起こるか、いくつかのアクティビティから、インテントの「開始」フィールドと「発信者」フィールドを渡す上でこのアクティビティを開始します。これは正常に動作し、すでにデバッグしてチェックしました...しかし、どこでも終了を呼び出さずに、このアクティビティ閉じられると、customtab を返すためのすべての情報が失われます

私のマニフェストでは

<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で呼び出されているのを見たことがありますが、復元は決して行われません。

4

0 に答える 0