私は2つの方法を起動するアンドロイドアプリを開発しています。 通常の方法は、携帯電話のアプリアイコンを押すことです。 もう1つの方法は、ウェブサイトからのディープリンクです。Android:Recentsが間違ったアクティビティを開始します
デープリンクは、アプリが何らかの「もの」を行う必要があるデータも送信します。しかしこれは一度だけ行うべきです。 ディープリンクアクティビティが終了すると、メインアクティビティが開始されます。しかし、私は(デバイス上)を押して、recentsからアプリを開くと、再びディープリンク活動を開きます。
マニフェスト内のrecentsからディープリンクアクティビティを除外できます。これはまた、最近のアプリからの主な活動を排除します。これはそうであってはなりません。
最近のアプリからのディープリンクの活動が開始されないようにするにはどうすればよいですか?
私のマニフェスト:
<activity
android:name="MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:launchMode="singleTask"
android:theme="@style/AppTheme">
</activity>
<activity
android:name="DeeplinkActivity"
android:label="@string/app_name"
android:noHistory="true"
android:screenOrientation="portrait"
android:launchMode="singleTask"
android:theme="@style/AppTheme">
<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="app_name" android:host="test" />
</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:host="test" android:path="/" android:scheme="app_name" />
</intent-filter>
</activity>
私は次の操作を行いMainActivityに切り替えるには:
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
しかしそのポスト: このポストはと重複としてマークされました同じ活動に関するものです。私はルートアクティビティを変更したいので、アプリケーションを開始してからDeeplinkActivityを開始しません。回避策としてはい、Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORYフラグを確認できます。しかし、その後、ユーザーがrecentsからアプリを起動するたびにDeeplinkActivityが開かれますが、これはもはや必要ありません。
アディティブインテント値の設定またはクリアは機能していないようです。 getIntent()からの情報を使用します。getData()
これが重複しているかのように感じる場合は、説明してください。
質問を再開しました。 –