来自通知的意图不会传递到Android中的目标活动

时间:2017-08-20 11:01:14

标签: android android-intent

在我的应用程序中,我有启动/恢复应用程序活动的启动活动,如果有的话,将所有意图附加内容传递给它:
清单:

<activity android:name=".StartActivity"
         android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
            android:screenOrientation="sensorLandscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

代码:

public class StartActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_preloader);
        String id=getIntent().getStringExtra("id");
        Log.d("push~","start activity oncreate:"+id);
        Intent i = new Intent(getIntent());
        openLastActivity(i);
        finish();
    }

    @Override
    protected void onNewIntent(Intent intent) {
        String id=intent.getStringExtra("id");
        Log.d("push~","start activity new intent:"+id);
        openLastActivity(intent);
        super.onNewIntent(intent);
    }

    private void openLastActivity(Intent i){
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
        if(GameActivity._this!=null) {
            i.setClass(this,GameActivity.class);
            startActivity(i);
        } else {
            i.setClass(this,SelectorActivity.class);
            startActivity(i);
        }
    }
}

此外,我的应用程序还提供服务,该服务会生成具有以下内容意图的通知:

Intent notificationIntent= new Intent(context, StartActivity.class);
notificationIntent.putExtra("id",id);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);

我希望id字符串将被传递给最后一个活动活动 问题是,当我通过通知运行应用程序时,它会启动应用程序并按预期传递ID,但如果有另一个通知(当我还在应用程序中时),则StartActivity的onCreate和onNewIntent方法都不会被调用没有数据传递给主要活动。

UPD:不知道原因,android:launchMode="singleTask" StartActivity解决了我的问题。现在所有意图都在onCreate

中接收

1 个答案:

答案 0 :(得分:0)

不知道原因,android:launchMode="singleTask" StartActivity解决了我的问题。现在所有意图都在onCreate

中接收