【问题标题】:Boot Receiver not working引导接收器不工作
【发布时间】:2011-12-20 04:11:03
【问题描述】:

清单:

         <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".AlarmActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                </intent-filter>
            </activity>
            <receiver android:name="CallReciver">
                <intent-filter>
                    <action android:name="android.intent.action.PHONE_STATE">  

</action>
                </intent-filter>
            </receiver>
            <receiver android:name=".SmsReceiver"> 
               <intent-filter android:priority="1000">
                    <action android:name=
                        "android.provider.Telephony.SMS_RECEIVED" /> 
                </intent-filter> 
            </receiver>
             <receiver android:name=".OnBootReceiver">
          <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
          </intent-filter>
        </receiver>
            <service
                android:enabled="true"
                android:name=".AlarmService">
            </service>
        </application>
         <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">
         </uses-permission>
        <uses-permission android:name="android.permission.READ_PHONE_STATE">
        </uses-permission>
        <uses-permission android:name="android.permission.WRITE_SMS">
        </uses-permission>
       <uses-permission android:name="android.permission.READ_SMS">
        </uses-permission>
       <uses-permission android:name="android.permission.SEND_SMS">
        </uses-permission>
        <uses-permission android:name="android.permission.RECEIVE_SMS">
        </uses-permission>
        <uses-permission android:name="android.permission.INTERNET">
        </uses-permission>

接收者:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class OnBootReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Log.d("Test","booot");
        Toast.makeText(context, "Test", Toast.LENGTH_LONG).show();
    }
}

接收器不工作。我关闭并打开我的设备,但没有任何反应。 这个项目中的短信和电话接收器工作得很好。 SMS Receiver 和 CallReceviver - 效果很好。 第一篇文章已更新 - 添加了完整清单。

【问题讨论】:

    标签: android broadcastreceiver boot


    【解决方案1】:

    如果您有 HTC device,您还需要注册 “android.intent.action.QUICKBOOT_POWERON”。所以清单中的条目应该是:

        <receiver android:name=".OnBootReceiver"> 
            <intent-filter> 
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            </intent-filter> 
        </receiver>    
    

    在我的 HTC 上,如果我关闭设备并打开一段时间,我会得到 QUICKBOOT_POWERON 并且没有 BOOT_COMPLETED。

    如果我关闭设备并取出电池一段时间 - 我在启动后得到 BOOT_COMPLETED。

    【讨论】:

    • 我们可以用模拟器试试这个吗?我在模拟器和设备上都试过了,但都没有。
    【解决方案2】:

    授权

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

    【讨论】:

    • 也可以尝试使用完整的类名,例如
    • 将接收者放入应用标签
    • 不要明白你的意思。
    • 您的清单没问题。OnBootReceiver 类是否与 SmsReceiver 和 CallReceiver 在同一个包中?
    • 尝试添加
    【解决方案3】:

    还要知道,在 Android >= 3.1 中,应用会以“停止”状态安装,并且在用户至少对应用“做某事”一次之前,不会收到启动和关闭事件。见this post on the topic.

    【讨论】:

      【解决方案4】:

      试试这个::

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

      干杯...!!!

      【讨论】:

      • 三星 A3 需要“启用”和“导出”标志设置为真,但在华为 6P 和其他 2 台设备上,我认为这些默认设置为真。感谢 Rohit 的解决方案 :)
      猜你喜欢
      • 1970-01-01
      • 2013-03-13
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      相关资源
      最近更新 更多