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