Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 引导后广播接收器不工作_Android_Broadcastreceiver - Fatal编程技术网

Android 引导后广播接收器不工作

Android 引导后广播接收器不工作,android,broadcastreceiver,Android,Broadcastreceiver,我已经创建了一个应用程序,它将接收来自firebase的通知,因此希望在用户启动手机后启动应用程序服务,这样他们就不需要再次手动启动应用程序。然而,广播接收器似乎就是不工作 AndroidManifest.XML <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.simplifie

我已经创建了一个应用程序,它将接收来自firebase的通知,因此希望在用户启动手机后启动应用程序服务,这样他们就不需要再次手动启动应用程序。然而,广播接收器似乎就是不工作

AndroidManifest.XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.simplifiedcoding.firebasecloudmessaging">

    <!-- Adding Internet Permission -->

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!--
            Defining Services
        -->
        <service
            android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

        <service
            android:name=".MyFirebaseInstanceIDService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>

        <service android:name=".NotificationService"/>


        <receiver android:name=".Broadcast" android:exported="true" android:enabled="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

    </application>

</manifest>
MainActivity.java

 public class MainActivity extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
我已经检查了以下内容

  • 权限接收\u启动\u已声明且不在标记内
  • 正在正确写入接收器标签

  • 我是做错了还是还遗漏了什么?我必须把它称为MainActivity吗?我怀疑我应该这样做?非常感谢任何指导。

    得到了解决方案,这是一个非常愚蠢的理由

    我正在使用Oppo的手机进行测试,Oppo有自己的Security Manager应用程序,您必须手动允许特定应用程序在启动后自动启动。就这些

    我怀疑大多数android手机也有这个功能,因此请记住检查是否有这样的应用程序,如果有,然后提醒用户在重新启动手机之前允许Security Manager应用程序中的应用程序,并且不能使用您的应用程序提供的任何服务


    希望这有帮助

    试试这个,它对我很管用

        <receiver android:enabled="true" android:name=".Broadcast"
                      android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </receiver>
    
    
    
    摆脱
    Toast
    方法之外的
    onReceive()
    方法,并确保在安装后至少手动启动一次应用程序,使其脱离停止状态。您还可以删除
    if
    ,因为它不是必需的,如果这就是您使用该Receiver类的全部目的。@MikeM。谢谢你的帮助。onReceive()方法之外的Toast只是这里的一个输入错误,它应该在if语句之外。我已经根据你的建议更新了问题,但仍然不起作用。Toast消息从未出现。请确保
    名称
    正确;正如您现在看到的那样,
    Broadcast
    类应该与
    MainActivity
    位于同一个包/文件夹中。另外,检查日志,看看在启动过程中是否有任何故障,如果你确定安装后自己已经运行过一次应用程序。仍然无法使其工作。我甚至尝试过编写一个非常简单的应用程序,就像在这个链接中教的那样,但仍然不起作用。我还在实际的手机上安装并试用了这些应用程序。嗯,那个教程已经过时了。从3.1开始,您必须在安装后至少启动一次
    活动
    ,否则您的启动接收器将无法播放。您的
    main活动
    至少工作正常吗?除此之外,很难说。你发布的内容本身是正确的;i、 例如,所有内容似乎都拼写正确,并且在清单中的正确位置,等等。您可以尝试清理/重建您的项目,暂时从接收方移除
    服务
    内容,再次检查接收方类的位置,等等。它已经工作了,并将我的解决方案留在下面。这是由于电话设置而不是androidmanifest。
        <receiver android:enabled="true" android:name=".Broadcast"
                      android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </receiver>