BOOT_COMPLETED 即使在手动启动应用程序后也未收到广播
BOOT_COMPLETED broadcast not received even after manually started app
我想让应用程序在设备启动时启动,但它不起作用,即使我添加了权限、intent-filters 和类别。
我知道在android 3.1之后,用户手动启动应用程序之前无法通过广播启动。
于是我运行安装了好几次app,还是不行。
下面是我的代码。
清单:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<receiver
android:name=".Receiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
和广播接收器class。
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = "action : " + intent.getAction();
Log.d("MyTag", action);
Toast.makeText(context, action, Toast.LENGTH_SHORT).show();
context.startActivity(new Intent(context, MainActivity.class));
}
}
通常这往往是由于明显的合并问题而发生的。
将两个 Intent 过滤器放在不同的接收器中,您的代码应该可以再次运行。让我们知道它是否仍然不起作用:)
我想让应用程序在设备启动时启动,但它不起作用,即使我添加了权限、intent-filters 和类别。
我知道在android 3.1之后,用户手动启动应用程序之前无法通过广播启动。
于是我运行安装了好几次app,还是不行。
下面是我的代码。
清单:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<receiver
android:name=".Receiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
和广播接收器class。
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = "action : " + intent.getAction();
Log.d("MyTag", action);
Toast.makeText(context, action, Toast.LENGTH_SHORT).show();
context.startActivity(new Intent(context, MainActivity.class));
}
}
通常这往往是由于明显的合并问题而发生的。
将两个 Intent 过滤器放在不同的接收器中,您的代码应该可以再次运行。让我们知道它是否仍然不起作用:)