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不在同一个包中