我在服务中有一个隐含的意图,它将信息发送到我的主要活动以及另一个类。我现在也想要启动我的主要活动。我查看了与此相关的无数帖子,并在清单中尝试了很多不同的事情 - 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>
是否有可能通过相对较小的更改来启动我的主要活动?提前谢谢。
答案 0 :(得分: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);
希望这会有所帮助......