我已经设置了清单方案中的StartActivity和MainActivity。
<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。
这在第一次正常工作(应用被杀死并且用户按下了网址)。 但是当应用程序处于后台(在MainActivity中)时,在用户按下url之后,它并没有通过StartActivity,而只是onMesume of MainActivity。
有人知道原因吗?以及如何确保它转到StartActivity?感谢。
答案 0 :(得分:1)
当你第一次从URL打开你的Activity时,那个时候创建了Activity onCreate()
方法调用.But如果你的Activity在Background中那么
将调用onNewIntent()
以覆盖此方法并将代码放在此处。
添加以下方法:IN 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传入Intent,它被接收到onNewIntent(Intent intent)
,你就可以得到我们从Intent发送数据从一个Activity发送到下一个活动。