Wie kann ich die Android-App fortsetzen, ohne den Aktivitätsstapel (oder den App-Status) mit Deep-Linking zu verlieren?
Ich habe das<intent-filter>
dass jedes Mal, wenn ein bestimmter Link gedrückt wird, meine App geöffnet wird, aber das Problem ist, dass ein @ geöffnet wiNe Instanz meiner App.Ist es trotzdem vorhanden, um onResume () auszulösen und meine App fortzusetzen, ohne ihren Status oder den Aktivitätsstapel zu verlieren?
Dies ist der Absichtsfilter:
<intent-filter>
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="example.com" />
<data android:pathPattern="/.*" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
AktualisiereDanke an Benutzer David Wasser Antwort unten Ich habe Antwort gefunden:
So habe ich EntryActivity erstellt, das über die Google Mail / Inbox-App gestartet wird:
public class EntryActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entry_activity);
Uri uriParams = getIntent().getData();
Log.e("EntryActivity", uriParams.getHost() );
Log.e("EntryActivity", uriParams.getQueryParameter("uid") + " " + uriParams.getQueryParameter("type") + " " + uriParams.getQueryParameter("token") );
Intent startCategory = new Intent(this, GotEmailActivity.class);
startCategory.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startCategory);
this.finish();
}
}
Wenn meine App bei GotEmailActivity geöffnet wird, sende ich dem Benutzer eine E-Mail mit einem Link zum Öffnen der App und GotEmailActivity hat das Attributandroid:launchMode="singleTop"
In AndroidManifest wird also nur 1 Instanz davon geöffnet:
<!--
Important: notice android:launchMode="singleTop"
which seeks if an instance of this activity is already opened and
resumes already opened instance, if not it opens new instance.
-->
<activity
android:name=".presenters.register.email.GotEmailActivity"
android:label="@string/title_activity_got_email"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
Nun passiert, dass EntryActivity auf der Google Mail-App geöffnet wird, aber sofort geschlossen wird, aber zuerst GotEmailActivity startet, das bereits geöffnet ist, sodass das Attribut launchMode Singletop eine neue Instanz einer solchen Aktivität verhindert.