Android开机启动事件未启动服务

5
我正在编写一个小型的Android应用程序,它可以在设备开机时启动我的服务。 该应用程序在所有Android版本为4.4.2(Mi Note 4G,必须在其安全应用中启用权限)、5.0(Lenovo K3 Note)、5.1(One Plus One)和6(Nexus 5)的手机上都能正常工作,但在运行Android 5.0(类似于MiUI的Lenovo A1000启动器)的一部手机上无法正常工作。该应用程序仅安装在内部存储器中。 在设备重新启动之前,已经使用/启动了该应用程序。 以下是来自清单和广播接收器文件的摘录:

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

我可能错过了一些代码以使其工作。任何评论/建议都会对我进一步进行帮助。

同时也遇到了联想A1000的问题。 - Deinlandel
你有没有得到联想A1000的解决方案? - Saveen
@Saveen 不了。我已经转而使用另一部手机来构建我的自定义应用程序。 - Naresh
是的,我已经做过同样的事情。 - Saveen
即使在Micromax上也无法工作,这是一个错误还是我们需要添加什么? - Ajith K P
使用此代码在清单文件中:<action android:name="android.intent.action.QUICKBOOT_POWERON" /> 如果是联想1000,则需要等待2到3分钟才能打开。 - S HemaNandhini
2个回答

4
问题出在设备上。有些设备只允许内部应用程序接收此操作。
您可以将此添加到您的意图过滤器中作为解决方法。
<action android:name="android.intent.action.USER_PRESENT" />

用户解锁设备后触发此操作。

-1

经过长时间的研究,我终于找到了解决方案,甚至连联想1000手机也可以。

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

对我来说它运行良好。如果是联想手机,您应该等待至少2分钟,然后它会自动打开。


2
你的答案和被采纳的答案有什么区别? - Ricardo A.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接