簡體   English   中英

Android BOOT_COMPLETED事件無法啟動服務

[英]Android BOOT_COMPLETED event not starting service

我正在編寫一個小的Android應用程序,它在設備啟動時啟動我的服務。 應用程序在Android版本4.4.2(Mi Note 4G,必須在其安全應用程序中啟用權限),5.0(聯想K3 Note),5.1(One Plus One),6(Nexus 5)的所有手機上運行良好,除了一款手機運行Android 5.0(聯想A1000,Launcher類似於MiUI)。 應用程序僅安裝在內部存儲上。 在設備重啟之前使用/啟動應用程序一次。 以下是清單和廣播接收器文件的摘錄

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

我可能錯過了一些代碼來使它工作。 任何評論/建議對我來說都有很大的幫助。

問題出在設備上。 某些設備僅允許內部應用程序接收此操作。

您可以將其添加到您的意圖過濾器中作為解決方法

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

用戶解鎖設備后會觸發此操作。

經過長時間的研究,我得到了解決方案,即使是聯想1000手機也是如此。

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

它的工作正常。如果它的聯想移動你應該等待至少2分鍾然后它將自動打開

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM