gpt4 book ai didi

Android BOOT_COMPLETED 事件未启动服务

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:00 27 4
gpt4 key购买 nike

我正在编写一个小型 Android 应用程序,它会在设备启动时启动我的服务。应用程序在所有 Android 版本 4.4.2(Mi Note 4G,必须在其安全应用程序中启用权限)、5.0(Lenovo K3 Note)、5.1(一加一)、6(Nexus 5)的手机上运行良好,除了一台运行 Android 5.0 的手机(联想 A1000,Launcher 类似于 MiUI)。应用程序仅安装在内部存储上。在设备重启之前使用/启动应用程序一次。以下是 list 和广播接收器文件的摘录

list .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

我可能漏掉了一些让它工作的代码。任何意见/建议都会对我继续进行有很大帮助。

最佳答案

问题出在设备上。一些设备只允许内部应用程序接收此操作。

您可以将其添加到您的 Intent 过滤器中作为解决方法

<action android:name="android.intent.action.USER_PRESENT" />

这是在用户解锁设备后触发的。

关于Android BOOT_COMPLETED 事件未启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34855072/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com