Android 未收到已完成的启动

Android 未收到已完成的启动,android,Android,我已经创建了一个Android应用程序,应该在启动后启动服务。 它在Nexus 5手机上工作正常,但我无法在华为平板电脑(Mediapad X2)上工作。我使用的是安卓5.0/API21 根据指南,清单具有适当的权限/意图 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WA

我已经创建了一个Android应用程序,应该在启动后启动服务。 它在Nexus 5手机上工作正常,但我无法在华为平板电脑(Mediapad X2)上工作。我使用的是安卓5.0/API21

根据指南,清单具有适当的权限/意图

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>

    <receiver
        android:name=".BootBroadcast"
        android:enabled="true"
        android:exported="true"
        android:label="BootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
        </intent-filter>
    </receiver>

经过长时间的研究,我发现有些设备有自己的启动管理器。华为Mediapad就是其中之一,因此:

  • 转到设备的设置
  • 查找启动管理器
  • 允许应用程序启动
    如果您的设备没有启动/引导管理器,请尝试检查应用程序管理器。在联想的VibeUI上,应用程序管理器有一个选项“限制启动”,启用该选项后,将阻止应用程序接收启动完成的意图。

    可能与重复,我认为这不是重复,因为OP说他还添加了Quickboot…..您是否尝试将
    添加到
    意图过滤器中?
    ?Hi@KostasC,正如我在帖子中提到的,我搜索了SO并考虑了他们的回复(例如添加QUICKBOOT_POWERON操作),但没有结果。华为设备是否有任何其他“隐藏”意图?…一些设备在清单中的声明中有一些奇怪的行为。例如,您的接收器:android:name=“.BootBroadcast”。有时候,如果你改写:“com.yourpackage.BootBroadcast”,我指的是全名,这会有所帮助。之后,清理项目,从设备卸载并再次安装。您好,感谢您提供此信息,但该设备没有启动管理器。我有一个“电话管理器”,但它没有启动/启动选项。@Konstantinos我的测试设备是华为MediaPad X1。问题完全一样。因此,您的设置可能会有所不同。当您直接通过apk安装应用程序时,是否提供了任何选项?MediaPad1显示允许在这种情况下自动启动的选项。我有10个华为MediaPad2。10件作品中有7件。但其他三个没有。这怎么可能?
    public class BootBroadcast extends BroadcastReceiver {
    
    private static final String TAG = "GrandUnion-Boot";
    
    @Override
    public void onReceive(Context context, Intent intent) {
    
        Log.e(TAG, "Boot_Completed RECEIVED");
        try{
            context.startService(new Intent(context,MyService.class));
            Log.i(TAG, "Boot Completed - start service");
        }catch(Exception e){
            Log.e(TAG,e.toString());
        }
    
    }
    }