Android BOOT_COMPLETED 事件未启动服务
Android BOOT_COMPLETED event not starting service
我正在编写一个小型 android 应用程序,它会在设备启动时启动我的服务。
应用程序在 Android 版本 4.4.2(Mi Note 4G,必须在其安全应用程序中启用权限)、5.0(Lenovo K3 Note)、5.1(一加一)、6(Nexus)的所有手机上运行良好5) 除了一台手机 运行 Android 5.0(Lenovo A1000,Launcher 类似于 MiUI)。应用程序仅安装在内部存储上。
Used/Launched 设备重启前应用一次。
以下是清单和广播接收器文件的摘录
manifest.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" />
广播接收者:
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);
}
}
一些预安装的应用程序在启动时可以正常启动,而有些则被跳过。我的应用恰好在跳过的应用列表中。
这是设备启动时 logcat 的一些行,
01-18 17:02:58.933 504-560/? I/PackageManager: Package com.android.deskclock checking android.permission.RECEIVE_BOOT_COMPLETED: BasePermission{183dc63c android.permission.RECEIVE_BOOT_COMPLETED}
01-18 17:02:58.933 504-560/? I/PackageManager: Package com.android.deskclock granting android.permission.RECEIVE_BOOT_COMPLETED
01-18 17:02:58.933 504-560/? I/PackageManager: Package com.android.mms.service checking android.permission.RECEIVE_BOOT_COMPLETED: BasePermission{183dc63c android.permission.RECEIVE_BOOT_COMPLETED}
01-18 17:02:58.933 504-560/? I/PackageManager: Package com.android.mms.service granting android.permission.RECEIVE_BOOT_COMPLETED
跳过包评论:
01-18 17:03:06.235 504-529/? D/ActivityManager: send broadcast: android.intent.action.BOOT_COMPLETED, skip package: com.google.android.gm
01-18 17:03:06.235 504-529/? D/ActivityManager: send broadcast:
> android.intent.action.BOOT_COMPLETED, skip package: com.company
01-18 17:03:06.235 504-529/? D/ActivityManager: send broadcast: android.intent.action.BOOT_COMPLETED, skip package: com.frozendevs.cache.cleaner
我可能遗漏了一些让它工作的代码。任何 Comments/suggestions 都会对我继续前进有很大帮助。
问题出在设备上。一些设备只允许内部应用程序接收此操作。
您可以将其添加到您的 intent 过滤器中作为变通方法
<action android:name="android.intent.action.USER_PRESENT" />
用户解锁设备后触发。
经过长时间的研究,我什至连联想 1000 手机也找到了解决方案。
<action android:name="android.intent.action.USER_PRESENT" />
它在 me.if 它的联想手机上工作正常,你应该至少等待 2 分钟然后它会自动打开
我正在编写一个小型 android 应用程序,它会在设备启动时启动我的服务。 应用程序在 Android 版本 4.4.2(Mi Note 4G,必须在其安全应用程序中启用权限)、5.0(Lenovo K3 Note)、5.1(一加一)、6(Nexus)的所有手机上运行良好5) 除了一台手机 运行 Android 5.0(Lenovo A1000,Launcher 类似于 MiUI)。应用程序仅安装在内部存储上。 Used/Launched 设备重启前应用一次。 以下是清单和广播接收器文件的摘录
manifest.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" />
广播接收者:
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);
}
}
一些预安装的应用程序在启动时可以正常启动,而有些则被跳过。我的应用恰好在跳过的应用列表中。
这是设备启动时 logcat 的一些行,
01-18 17:02:58.933 504-560/? I/PackageManager: Package com.android.deskclock checking android.permission.RECEIVE_BOOT_COMPLETED: BasePermission{183dc63c android.permission.RECEIVE_BOOT_COMPLETED}
01-18 17:02:58.933 504-560/? I/PackageManager: Package com.android.deskclock granting android.permission.RECEIVE_BOOT_COMPLETED
01-18 17:02:58.933 504-560/? I/PackageManager: Package com.android.mms.service checking android.permission.RECEIVE_BOOT_COMPLETED: BasePermission{183dc63c android.permission.RECEIVE_BOOT_COMPLETED}
01-18 17:02:58.933 504-560/? I/PackageManager: Package com.android.mms.service granting android.permission.RECEIVE_BOOT_COMPLETED
跳过包评论:
01-18 17:03:06.235 504-529/? D/ActivityManager: send broadcast: android.intent.action.BOOT_COMPLETED, skip package: com.google.android.gm
01-18 17:03:06.235 504-529/? D/ActivityManager: send broadcast:
> android.intent.action.BOOT_COMPLETED, skip package: com.company
01-18 17:03:06.235 504-529/? D/ActivityManager: send broadcast: android.intent.action.BOOT_COMPLETED, skip package: com.frozendevs.cache.cleaner
我可能遗漏了一些让它工作的代码。任何 Comments/suggestions 都会对我继续前进有很大帮助。
问题出在设备上。一些设备只允许内部应用程序接收此操作。
您可以将其添加到您的 intent 过滤器中作为变通方法
<action android:name="android.intent.action.USER_PRESENT" />
用户解锁设备后触发。
经过长时间的研究,我什至连联想 1000 手机也找到了解决方案。
<action android:name="android.intent.action.USER_PRESENT" />
它在 me.if 它的联想手机上工作正常,你应该至少等待 2 分钟然后它会自动打开