2017-01-03 36 views
0

私はちょうど私のアプリへのディープリンクを実装しました。インテントフィルタを主なアクティビティに追加しました。ユーザーが私のURLスキームを開始するとき、私はそれを解析し、パラメータに応じて適切な情報を表示するためにアクティビティを処理します。私のアプリが最初から起動されたときにうまく動作します。URLスキームで他のアプリからバックグラウンドアプリを開くと主なアクティビティを開始

<activity 
    android:launchMode="singleTask" 
    android:name="com.my.app.ui.activities.MainActivity" 
    android:screenOrientation="portrait" 
    android:configChanges="orientation|screenSize|"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
     <data android:scheme="myapp-scheme"/> 
    </intent-filter> 
</activity> 

この問題は、スタック上に他のアクティビティをいくつか開いて背景に移動するときに発生します。今、このアプリが私のスキームurlを呼び出すことによってバックグラウンドから再開された場合、すべてのアクティビティはまだスタック上にあり、メインアクティビティは表示されません。 どうすれば解決できますか? 私は主な活動に戻ることを考えますが、他のアプリや通常の方法でアプリを起動した場合は情報がありません。

答えて

1

あなたは(ManiActivity用)マニフェストに次の行を追加してsingleTaskとしてごMainActivityを行う必要があります。

アンドロイド:launchMode = "singleTask"

を次に、onNewIntentを(上書き)MainActivityにあり、ディープリンクデータに基づいてナビゲーションを処理します。これはあなたの質問にお答えします。

+1

ありがとうございました!それが私が探していたものです。 :) – objc3p0

+0

これはどのように正しい答えですか?あなたが質問に投稿されているmanfestを見ると、OPは既に 'launchMode =" singleTask "'を指定しています! –

+0

また、既存のタスクがすでに 'MainActivity'の上に別の' Activity'を持っている場合、 'MainActivity.onNewIntent()'は呼び出されないので、これは正しくありません。 –

関連する問題