2017-02-14 1 views
0

Ich habe StartActivity und MainActivity, in manifest Schema ist bereits festgelegt.Android nicht geöffnet geöffnet Aktivität von URL-Schema, wenn der App-Start bereits

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

Der ursprüngliche Entwurf ist nach Benutzer die URL in Browser gedrückt wird, sie zu öffnen StartActivity und dann zu MainActivity gehen, wenn der Benutzer logined.

Dies funktioniert korrekt in der ersten Zeit (App getötet wird und Benutzer gedrückt die URL). Während sich die App im Hintergrund befindet (in MainActivity), hat sie nach dem Drücken der URL nicht die StartActivity, sondern OnResume of MainActivity durchlaufen.

Wer kennt den Grund? und wie man sicherstellt, dass es zu StartActivity geht? Vielen Dank.

+0

können Sie den Code von StartActivity – Abilash

Antwort

0

, wenn Sie Ihre Aktivität erstes Mal von URL zu öffnen, erstellt, dass die Zeit Aktivität so onCreate() Methode aufgerufen .Aber wenn Ihre Aktivität im Hintergrund ist dann onNewIntent() wird aufgerufen, so dass diese Methode außer Kraft setzen und Sie hier Code setzen.

unten Methode hinzufügen: IN MainActivity

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

} 

In Manifest:

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

starten Aktivität:

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

, wenn Sie irgendeine Eingabewert übergeben wollen, dann können Sie in Intent passieren durch Bundle, das in onNewIntent(Intent intent) empfangen wird, und Sie können bekommen, genau wie wir dat bekommen a von Absicht senden von einer Aktivität zur nächsten Aktivität.

+0

geschrieben Mit Debugger überprüft, OnNewIntent wird in MainActivity –

+0

nicht aufgerufen Ich denke, Sie haben Android entfernt: launchMode = "singleTask", Deshalb wurde es nicht aufgerufen. –

+0

Wenn Sie Android verwenden: launchMode = "singleTask" in Manifest muss nicht Intent Flags in StartActivity hinzufügen –

Verwandte Themen