从其他应用

时间:2015-10-20 23:43:10

标签: android android-intent oncreate app-launcher

我有一个应用程序(让我们称之为“SendingApp”)试图通过在按钮A 上调用它来启动我的应用程序:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.sendingapp");
launchIntent.putExtra("my_extra", "AAAA"));
startActivity(launchIntent);

按钮B

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.sendingapp");
launchIntent.putExtra("my_extra", "BBBB"));
startActivity(launchIntent);

在我自己的应用程序中(让我们称之为“ReceivingApp”)我在Manifest中定义了一个启动器活动:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

在ReceivingApp中我的 MainActivity 类的onCreate方法中,我收到额外信息并将其输出到TextView,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent intent = getIntent();
    if(intent != null) {
        Bundle extras = intent.getExtras();
        if(extras != null && extras.getString("my_extra") != null){
            ((TextView)findViewById(R.id.test_text)).setText(extras.getString("my_extra"));
        } else {
            ((TextView)findViewById(R.id.test_text)).setText("NORMAL START");
        }
    }
}

通常通过点击其图标或开始从Eclipse调试它来正常启动ReceivingApp工作正常,TextView显示为“NORMAL START”。

当我按下后退按钮关闭ReceivingApp并转到SendingApp并按下按钮A时,ReceivingApp启动并显示AAAA。如果我再次返回并按下按钮B,则启动ReceivingApp并显示BBBB。到目前为止,非常好。

当我强制退出任务列表或应用程序管理器中的ReceivingApp然后转到SendingApp并按下按钮A时,ReceivingApp将启动并显示AAAA(仍然正确)但是当我返回并按下按钮时B,ReceivingApp将启动但不会调用 onCreate ,因此不显示BBBB但仍然显示AAAA,就像它已被带到前台但没有收到任何意图。按下ReceivingApp中的后退按钮也会显示没有新的MainActivity实例放在活动堆栈上。

关闭ReceivingApp并通过单击其图标启动它可修复此问题。但我需要能够接收不同的意图,即使它在收到第一个意图时没有运行。

之前有没有人遇到过这种行为?我的代码是接收错误的数据还是Android错误?

0 个答案:

没有答案