我正在编写一个小型 android 应用程序,它在设备启动时启动我的服务。应用程序在所有 Android 版本 4.4.2(Mi Note 4G,必须在其安全应用程序中启用权限)、5.0(Lenovo K3 Note)、5.1(一加一)、6(Nexus 5)的手机上运行良好,除了一台运行 Android 5.0 的手机(联想 A1000,启动器类似于 MiUI)。应用程序仅安装在内部存储上。在设备重新启动之前使用/启动应用程序一次。以下是清单和广播接收器文件的摘录
清单.xml:
<receiver android:name="com.company.Broadcast"? android:permission="android.permission.RECEIVE_BOOT_COMPLETED">?
<intent-filter>?
<action android:name="android.intent.action.BOOT_COMPLETED" />?
<category android:name="android.intent.category.LAUNCHER" />?
</intent-filter>?
</receiver>
? <service android:enabled="true" android:exported="false" android:name="com.company.service" />
Run Code Online (Sandbox Code Playgroud)
广播接收器:
public class Broadcast extends BroadcastReceiver {?
private static final String TAG = “BroadcastReceiver";?
@Override?
public void onReceive(Context context, Intent intent) {?
Log.d(TAG, "onReceive");?
Intent service = new Intent(context, Service.class);?
service.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);?
context.startService(service);
? }?
? }
Run Code Online (Sandbox Code Playgroud)
一些预安装的应用程序在启动时可以正常启动,而有些则被跳过。我的应用程序恰好在跳过的应用程序列表中。
以下是设备启动时 logcat 中的一些行,
01-18 17:02:58.933 504-560/? I/PackageManager: Package …Run Code Online (Sandbox Code Playgroud)