2017-02-14 70 views
0

我有StartActivity和MainActivity,在manifest方案中已经设置。如果应用程序启动,Android没有通过url方案打开活动

<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当用户logined。

这在第一次正常工作(应用程序被杀害,用户按下url)。 但是,当应用程序在后台(在MainActivity中),用户按下url后,它不会通过StartActivity,而只是通过MainActivity的onResume。

有人知道原因吗?以及如何确保它进入StartActivity?谢谢。

+0

你可以发布StartActivity的代码 – Abilash

回答

0
当您打开从URL您的活动第一次

,创造了一次活动,这样onCreate()方法中调用。但如果你的活动是在后台则 onNewIntent()将被调用,从而覆盖此方法并把你的代码在这里。

添加如下方法:在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,收到onNewIntent(Intent intent),你可以得到就像我们得到dat来自意向从一个活动发送到下一个活动。

+0

使用调试器进行检查,onNewIntent没有在MainActivity中调用 –

+0

我认为你已经删除了android:launchMode =“singleTask”,这就是为什么它没有调用。 –

+0

如果您在清单中使用android:launchMode =“singleTask”,则不需要在StartActivity中添加Intent标志 –

相关问题