【问题标题】:Boot_complete broadcast not workingBoot_complete 广播不起作用
【发布时间】:2015-08-14 10:17:11
【问题描述】:

我的应用中有一个 boot_completed 广播,但它不起作用。该应用未安装在 SD 卡上。

Android manfest.xml

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

        </intent-filter> 
    </receiver>

Bootreceiver.java

package nl.bicknos.TWPD;

import android.content.BroadcastReceiver; import android.content.Context;
import android.content.Intent;
 public class BootReceiver extends BroadcastReceiver{
    @Override   public void onReceive(Context context, Intent intent) {
        Toast.makeText(this, "Gestart", Toast.LENGTH_SHORT).show();} }

我已经搜索过,但我在那里找到的解决方案不起作用

【问题讨论】:

  • 在您的manifest.xml 中添加&lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /&gt;
  • 我的 manifest.xml 中已经有了它
  • 您是否遇到崩溃或在手机启动时未调用广播接收器?
  • @Bicknos 你检查了我对我的回答所做的编辑吗?它解决了你的问题?您必须将任何问题标记为正确:)
  • 我检查了你的编辑,但我的测试手机没有发送意图,因为它正在运行测试版固件

标签: android broadcastreceiver


【解决方案1】:

首先检查你是否在你的 Manifest.xml 中实现了

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

你的intent-filter应该是

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

在您的广播中,您必须添加

 @Override
public void onReceive(Context context, Intent intent) {
   Toast.makeText(context, "Gestart", Toast.LENGTH_SHORT).show();
}

注意:我猜你的错误是当你没有context 时试图通过this

编辑

您也可以尝试使用Log.d 而不是Toast put :

Log.d("Restarted", "I'm on BR");

如果您的BroadcastReceiver 没有打电话,请尝试将您的manifest 接收器替换为:

<receiver android:name="nl.bicknos.TWPD.BootReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver>

这很明显,但可能存在错误...您的 &lt;uses-permission&gt; 需要是该元素的子元素...

让我知道它是否有效:)

【讨论】:

  • 我已经检查过了,一切都像你说的那样,但它不起作用。我认为广播接收器没有被调用。
  • 如果你在 AndroidStudio 上做this 否则清除你的项目
【解决方案2】:

你的错误在于

Toast.makeText(this, "Gestart", Toast.LENGTH_SHORT).show(); this 这里不属于任何 UI Activity。您的接收器实际上正在被调用。但由于您不在 UI 上下文中“吐司”,因此您无法看到吐司消息。如果您尝试在此 onReceive() 中添加日志,您将在“logcat”中看到它。

我希望这会有所帮助:)

【讨论】:

    【解决方案3】:

    我找到了问题,不是代码,而是我的手机。我的设备启动后没有一个应用程序启动。由于我运行的是测试版,所以我降级了,现在它正在运行。

    【讨论】:

      猜你喜欢
      • 2017-06-05
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多