Jek*_*eka 3 android android-manifest android-intent android-lifecycle android-activity
我正在使用深层链接打开我的应用程序这是意图过滤器:
<intent-filter>
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="myapp.delivery" />
<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>
Run Code Online (Sandbox Code Playgroud)
我们的用例是:
(在步骤4之后)用户点击电子邮件应用程序(例如gmail或收件箱应用程序)上的URL,提示用户打开我的应用程序或浏览器,如下所示:
当用户点击打开我的应用程序时,会发生GotEmailActivity在gmail应用程序之上打开,我需要它在我之前打开的应用程序实例之上打开.
正如你在这里看到的那样,我的应用程序的2个实例是打开的(应用程序的第一个实例,第二个实例在gmail之上打开),:
所以我创建了在gmail/inbox应用程序之上启动的EntryActivity:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
现在发生的事情是,EntryActivity在Gmail应用程序的顶部打开但它关闭了inmediatle但首先启动已经打开的GotEmailActivity,因此属性launchMode Singletop会阻止此类活动的新实例.
然后当我的应用程序在GotEmailActivity打开时,我向用户发送电子邮件,其中包含打开应用程序的链接,而GotEmailActivity android:launchMode="singleTop"在AndroidManifest中具有属性,因此只打开了1个实例:
<!--
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" >
Run Code Online (Sandbox Code Playgroud)
答案的优点是:https://stackoverflow.com/a/34499615/5297353
| 归档时间: |
|
| 查看次数: |
2589 次 |
| 最近记录: |