gpt4 book ai didi

Android - BroadcastReceiver 不接收自定义 Intent

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:10:08 25 4
gpt4 key购买 nike

我有:

MyApp 使用 onCreate 扩展应用程序:

sendBroadcast(refreshAlarm);

Log.d(TAG, "broadcast sent with intent " + refreshAlarm);
Log.d(TAG, "onCreate");

在哪里

static final Intent refreshAlarm = new Intent(ACTION_REFRESH_RECEIVER);
public static final String ACTION_REFRESH_RECEIVER = "com.example.myapp.REFRESH_RECEIVER";

广播接收者:

package com.example.myapp;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.preference.PreferenceManager;
import android.util.Log;

public class RefreshReceiver extends BroadcastReceiver
{
private static final String TAG = "RefreshReceiver";

@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "broadcast received with intent " + intent);
long interval = Long
.parseLong(PreferenceManager.getDefaultSharedPreferences(
context).getString("delay", "900")) * 1000;

PendingIntent operation = PendingIntent.getService(context, -1,
new Intent(context, RefreshService.class),
PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);

alarmManager.cancel(operation);

if (interval > 0)
{
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), interval, operation);
}

Log.d(TAG, "onReceive: delay = " + interval);
}
}

在 list 中声明:

<receiver android:name="com.example.myapp.RefreshReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="com.example.myapp.REFRESH_RECEIVER" />
</intent-filter>
</receiver>

在我看来,我已经拥有完成这项工作所需的一切。广播在 onCreate 中发送(我可以在日志中看到它确实已发送)。广播是用 Intent 过滤器声明的,以接收 refreshAlarm Intent ,但它没有收到它,我不知道为什么。我还需要什么吗?

最佳答案

如果您将 BroadCastReceiver 放在 mainfest.xml 中,则无需在代码中注册它,仅当您在代码中创建它时才在代码中注册它

这是这里的例子:

 <receiver android:name="MyReceiver" >
<intent-filter>
<action android:name="android.mybroadcast" />
</intent-filter>
</receiver>

在这里从你的类文件中调用它,

Intent intent = new Intent();
intent.setAction("android.mybroadcast");
sendBroadcast(intent);

关于Android - BroadcastReceiver 不接收自定义 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18423774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com