【发布时间】:2015-11-20 11:52:35
【问题描述】:
我有以下情况: 当我启动我的应用程序时,会发生以下情况:
- 我开始活动
StartActivity - 如果我从来没有登录过(我知道它基于一些共同的偏好)启动
LoginActivity并显示登录布局(用户名和密码) - 如果我已经登录,无论如何我都会启动
LoginActivity,但我会使用保存在共享首选项中的(加密的)数据,而无需再次向用户询问凭据。 - 登录成功后,我启动活动
StartActivity
现在在我的清单文件中,MainActivity 有以下 IntentFilter:
<intent-filter android:label="Conio" >
<action android:name="android.intent.action.VIEW" />
<data android:scheme="myprotocol" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
如果有一个大的“BUT”,一切都会很好: 只有当我的应用程序已经打开时,一切才能正常工作:我的应用程序被置于前面,调用 onCreate 方法并使用 getIntent.getData() 我可以访问启动我的应用程序的 URI。
大问题:
我需要的是:
- 当我的应用程序尚未启动时,一切都应该从
StartActivity开始,按照前面的解释- 当我的应用程序运行时,行为必须是当前行为
为了做到这一点,我做了以下尝试:
我将该 IntentFilter 应用于新的 Activity ,在此 Activity 的 onCreate 方法中,我输入了以下代码
Intent intent = getPackageManager().getLaunchIntentForPackage("my.package.name");
if (intent != null) {
intent.setData(intent.getData());
intent.putExtra("test", "test");
startActivity(intent);
finish();
}
但这里发生的情况是,当应用程序未运行时,应用程序从 StartActivity 正确启动,但如果应用程序已经在运行,则 MainActivity 被置于前面,但我无法访问意图额外内容,实际上这段代码可以不工作
@Override
protected void onResume() {
super.onResume();
//this code returns null
String test=getIntent.getStringExtra("test");
}
我怎样才能让这一切发挥作用?
【问题讨论】:
标签: android android-intent android-activity activity-lifecycle