2017-02-14 71 views
0

我有StartActivity和MainActivity,在manifest方案中已經設置。如果應用程序啓動,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); 
     } 
    } 
} 

最初的設計是用戶在瀏覽器中按下網址後,它打開StartActivity然後去MainActivity當用戶logined。

這在第一次正常工作(應用程序被殺害,用戶按下url)。 但是,當應用程序在後臺(在MainActivity中),用戶按下url後,它不會通過StartActivity,而只是通過MainActivity的onResume。

有人知道原因嗎?以及如何確保它進入StartActivity?謝謝。

+0

你可以發佈StartActivity的代碼 – Abilash

回答

0
當您打開從URL您的活動第一次

,創造了一次活動,這樣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); 

,如果你想傳遞任何輸入值,那麼你可以通過在意圖通過Bundle,收到onNewIntent(Intent intent),你可以得到就像我們得到dat來自意向從一個活動發送到下一個活動。

+0

使用調試器進行檢查,onNewIntent沒有在MainActivity中調用 –

+0

我認爲你已經刪除了android:launchMode =「singleTask」,這就是爲什麼它沒有調用。 –

+0

如果您在清單中使用android:launchMode =「singleTask」,則不需要在StartActivity中添加Intent標誌 –

相關問題