0

我在向我的主要活动以及另一个类发送信息的服务中有一个隐含的意图。我现在也希望这种意图能够启动我的主要活动。我查看了与此相关的无数帖子,并尝试了许多不同的东西——清单中的addCategory, setAction(MAIN; the activity's name; you name it, I've tried it...),category.DEFAULT以及其他一些导致 ActivityNotFoundExceptions (最常见)或其他不受欢迎的行为的事情。

这是设置意图的位置和清单的相关部分。意图的接收者在主活动中注册。

final String NEW_DOSES = "changed to protect the innocent";
Intent bluetoothBroadcast = new Intent();
several putExtra lines here
bluetoothBroadcast.setAction(NEW_DOSES);
sendBroadcast(bluetoothBroadcast);

<activity
   android:name=".AsthmaAppActivity"
   android:label="@string/app_name" >
   <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

是否有可能通过相对较小的更改来启动我的主要活动?提前致谢。

4

1 回答 1

1

是的,但是 sendBroadcast(bluetoothBroadcast); sendBroadcast 不启动活动。您必须使用 startActivity 来实现这一点。例如,这里是启动器应用程序为了启动应用程序将执行的操作:

public static void LaunchApplication(Context cx, String packagename) {
    PackageManager pm = cx.getPackageManager();
    Intent i = pm.getLaunchIntentForPackage(ai.packageName);
    if (i != null) cx.startActivity(i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}

您可以轻松调整启动活动所需的附加功能和数据。例如,如果您的活动名为 myActivity,那么您可以这样:

Intent i = new Intent(cx, myActivity.class);
//Put the extras and the data you want here...
//If you are launching the activity from a receiver component you must use
//i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
cx.startActivity(i);

希望这可以帮助...

于 2012-09-28T21:56:16.830 回答