1

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

4

3 回答 3

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");
于 2013-02-27T11:49:08.133 回答
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>
于 2013-02-27T11:43:12.713 回答
0

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

getContext().sendBroadcast(new Intent("MY_ACTION").setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES), null);
于 2015-06-04T15:48:01.097 回答