2017-02-14 18 views
0

私はStartActivityとMainActivityを持っていますが、マニフェストスキームは既に設定されています。アプリが既に起動されている場合、AndroidはURLスキームでオープンアクティビティを開いていない

<activity 
     android:name=".StartActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppThemeNoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <data android:scheme="myApp" /> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".MainActivity" 
     android:launchMode="singleTask" 
     android:parentActivityName=".StartActivity" /> 

StartActivity:

public class StartActivity extends InstrumentedActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.activity_start); 

     if (isLogin) { 
      Intent intent = new Intent(context, MainActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
     } 
    } 
} 

オリジナルのデザインは、ユーザーがブラウザにURLを押した後にオープンStartActivity、あるユーザーがloginedときにMainActivityに行きます。

これは正しく動作します(アプリケーションが強制終了され、ユーザーがURLを押したとき)。 しかし、アプリケーションがバックグラウンド(MainActivity内)にいる間、ユーザーがURLを押すと、StartActivityを通過せず、MainActivityのonResumeだけを通過しました。

誰かがその理由を知っていますか?それがStartActivityに行くことを確認する方法は?ありがとう。

+0

あなたはStartActivityのコードを投稿することができます – Abilash

答えて

0

あなたはURLからあなたのアクティビティを初めて開いたときに、あなたの活動が背景にある場合.Butと呼ばれるそうonCreate()メソッドを作成し、その時間の活動が続い onNewIntent()は、このメソッドをオーバーライドして、あなたはここにコーディング置くと呼ばれます。

法の下に追加します。MainActivity

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    // add your code here 

} 

マニフェストで:

<activity 
android:name=".MainActivity" 
android:launchMode="singleTask" 
/> 

開始アクティビティ:あなたは任意の入力値を渡したい場合は、テントで

Intent intent = new Intent(context, MainActivity.class); 
startActivity(intent); 

渡すことをバンドルを通じて、それはonNewIntent(Intent intent)に受信され、あなたは私たちが1つのアクティビティから次のアクティビティにインテントから送信します。

+0

デバッガを使ってチェックされ、onNewIntentはMainActivityで呼び出されません –

+0

アンドロイドを削除したと思います:launchMode = "singleTask"、それはなぜ呼び出されなかったのですか? –

+0

Manifestのアンドロイド:launchMode = "singleTask"を使用している場合、StartActivityにインテントフラグを追加する必要はありません –

関連する問題