Android AlarmManager不在Fragment或Main.java中工作
我必须错过一些东西,我为自己做了一个测试应用程序项目,它在那里工作得很好,但是当我试图将我的Android AlarmManager不在Fragment或Main.java中工作,android,android-fragments,alarmmanager,Android,Android Fragments,Alarmmanager,我必须错过一些东西,我为自己做了一个测试应用程序项目,它在那里工作得很好,但是当我试图将我的AlarmManager实现到我的主项目片段中时,它就是不起作用。这是我的密码: 我的片段中的方法: public void schedule() { Long time = new GregorianCalendar().getTimeInMillis()+10*1000; Intent intent = new Intent(getActivity(), AlarmReceiver.c
AlarmManager
实现到我的主项目片段中时,它就是不起作用。这是我的密码:
我的片段中的方法:
public void schedule()
{
Long time = new GregorianCalendar().getTimeInMillis()+10*1000;
Intent intent = new Intent(getActivity(), AlarmReceiver.class);
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, 10*1000, PendingIntent.getBroadcast(getActivity(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT));
}
这是我的AlarmReceiver.class
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show();
}
}
还有我清单文件中的准备工作:
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<application
... >
<receiver android:name=".AlarmReceiver"/>
我做错了什么
注意:它似乎甚至没有到达AlarmReceiver
您的代码似乎正常工作。
但问题在于清单。
<receiver android:name=".AlarmReceiver"/>
例如,应该是具有完整包名的
<receiver android:name="com.example.AlarmReceiver"/>
我已经用我的应用程序仔细检查过了。所以您可以开始了。您的代码似乎正常工作。
但问题在于清单。
<receiver android:name=".AlarmReceiver"/>
例如,应该是具有完整包名的
<receiver android:name="com.example.AlarmReceiver"/>
我已经用我的应用程序仔细检查过了。所以你可以走了。你使用的接收器不正确。您首先需要做的是将操作添加到接收方的清单中
<receiver android:name=".AlarmReceiver">
<intent-filter>
<action android:name="com.example.action.ALARM" />
</intent-filter>
在您的接收器中:
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.example.action.ALARM")
Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show();
}
这应该可以解决问题。您使用的接收器不正确。您首先需要做的是将操作添加到接收方的清单中
<receiver android:name=".AlarmReceiver">
<intent-filter>
<action android:name="com.example.action.ALARM" />
</intent-filter>
在您的接收器中:
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.example.action.ALARM")
Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show();
}
这应该能奏效。谢谢你的投票。你是怎么解决的?和我建议的一样?我和我的一个朋友意见不合……是的,没错!我必须添加“com.example…”,因为我尝试使用的片段和AlarmReceiver不在同一个包中。upvote的hanks。你是怎么解决的?和我建议的一样?我和我的一个朋友意见不合……是的,没错!我不得不添加“com.example…”,因为我试图使用的片段和AlarmReceiver不在同一个包中