我可以使用广播接收器启动另一个应用程序?

时间:2013-02-27 11:38:46

标签: android android-broadcast

我只是想知道我已经创建了一个应用程序并将其安装在我的设备上。是否可以通过仅使用广播接收器启动此应用程序,如果是这样我该怎么办?

3 个答案:

答案 0 :(得分:1)

使用以下代码在应用程序未运行时打开活动。

Intent myIntent = new Intent(context.getApplicationContext(), YourClassActivity.class);
Bundle bundle = new Bundle();
myIntent.putExtras(bundle);
myIntent.addFlags(
      Intent.FLAG_ACTIVITY_NEW_TASK
    | Intent.FLAG_ACTIVITY_CLEAR_TOP
    | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.getApplicationContext().startActivity(myIntent);

你可以在包中传递任何数据,如

bundle.putString("title", "from receiver");

答案 1 :(得分:0)

如果BroadcastReceiver正在侦听,那么应用程序也在“正在运行”。 如果你想打开Activity,那么

@Override
public void onReceive(Context context, Intent intent) {
    context.startActivity(new Intent(context, YourActivity.class));
}

您需要在清单(来自doc)中静态注册接收器

You can either dynamically register an instance of this class with Context.registerReceiver() or statically publish an implementation through the <receiver> tag in your AndroidManifest.xml. 您还应该指定无法捕获的意图操作

<receiver android:name=".YourReceiver"
    android:exported="true"
    android:enabled="true" >
    <intent-filter>
       <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
    </intent-filter>
</receiver>

答案 2 :(得分:0)

发送广播时,您需要添加一个标志来启动尚未运行的包。

getContext().sendBroadcast(new Intent("MY_ACTION").setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES), null);