在Android中接收警报

在Android中接收警报,android,broadcastreceiver,android-alarms,Android,Broadcastreceiver,Android Alarms,在我的项目中,我使用了报警代码。没有错误,但未执行BroadcastReceiver类中的任何内容。我不明白错在哪里。 我在Windows中使用Eclipse做这件事。我还在AndroidManifest.xml中指定了类 我希望执行BroadcastReceiver类中的代码。在本例中,我希望receiver类中给定的文本在指定的时间显示。 这是我的接收机等级: public class MyBroadcastReceiver extends BroadcastReceiver { @Over

在我的项目中,我使用了报警代码。没有错误,但未执行
BroadcastReceiver
类中的任何内容。我不明白错在哪里。 我在Windows中使用Eclipse做这件事。我还在AndroidManifest.xml中指定了

我希望执行
BroadcastReceiver
类中的代码。在本例中,我希望receiver类中给定的文本在指定的时间显示。 这是我的接收机等级:

public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    context.registerReceiver(null, null);
    Toast.makeText(context, "Time is
up!!!!.",Toast.LENGTH_LONG).show();
}}
有人能提出解决这个问题的办法吗? 谢谢

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.project.rappel"
android:versionCode="1"
android:versionName="1.0">
<application
    android:icon="@drawable/icon"
    android:label="@string/app_name">
    <provider
        android:name="ScheduleProvider"
        android:authorities="com.project.rappel" />
    <activity
        android:name=".Rappel"
        android:label="@string/app_name">
        <intent-filter>
            <action
                android:name="android.intent.action.MAIN" />
            <category
                android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".SetSchedule"></activity>
    <activity
        android:name=".DaysAndTimes"></activity>
    <activity
        android:name=".Tts"></activity>

    <receiver
        android:name="MyBroadcastReceiver"
        android:process=":remote" />
   </application>
   <uses-sdk
    android:minSdkVersion="8" />

   </manifest> 

仅看这段代码就不容易回答了。 但是,很可能您没有在清单中为接收者指定意图过滤器

<receiver android:name=".MyBroadcastReceiver"> 
<intent-filter> 
        <action android:name="xyz.abc.YOUR_ACTION" />  
</intent-filter> 
</receiver>
希望这有帮助


干杯

我想问题出在清单文件中

尝试从接收器中删除此参数“android:process=“:remote”

编辑: 请看我的代码,它工作得很好。希望这会有帮助

// registration  
 Intent intent = new Intent(context, AlarmReceiver.class).putExtra(AlarmReceiver.ALARM_ID, alarm.getId());  
intent.setData(Uri.parse("date:" + alarm.getId()));  
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); // try to change last parameter like mine  
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTime().getTime(), pendingIntent);

// in manifest in application tag  
<receiver android:name=".ui.more.AlarmReceiver"/>
// receiver class  
public class AlarmReceiver extends BroadcastReceiver {  
    public static final String ALARM_ID = "alarmId";  
    public void onReceive(Context context, Intent intent) {  
     context.startActivity(new Intent(context, StartAlarmActivity.class)
               .putExtra(StartAlarmActivity.ALARM_ID, intent.getExtras().getInt(ALARM_ID))
               .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));  
    }  
}
//注册
意向意向=新意向(上下文,AlarmReceiver.class).putExtra(AlarmReceiver.ALARM_ID,ALARM.getId());
setData(Uri.parse(“date:+alarm.getId());
PendingIntent PendingIntent=PendingIntent.getBroadcast(上下文,0,意图,PendingIntent.FLAG_UPDATE_CURRENT);//试着像我一样改变最后一个参数
alarmManager.set(alarmManager.RTC_唤醒,cal.getTime().getTime(),PendingContent);
//在应用程序标记的清单中
//接收级
公共类AlarmReceiver扩展广播接收器{
公共静态最终字符串报警\u ID=“alarmId”;
public void onReceive(上下文、意图){
新意图(context,StartAlarmActivity.class)
.putExtra(StartAlarmActivity.ALARM_ID,intent.getExtras().getInt(ALARM_ID))
.addFlags(意图、标志、活动、新任务);
}  
}

首先尝试在MyBroadcastReceiver前面的清单文件中添加句点。它应该看起来像:android:name=“.MyBroadcastReceiver”

如果这不起作用(尽管希望如此),请尝试在此行的报警服务之前添加“上下文”:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
所以它看起来像:

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
否则,我看不到任何明显的东西。

此代码工作正常:

public void setupAlarm() {
    AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, MyAlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
            intent, 0);
    Calendar time = Calendar.getInstance();
    time.setTimeInMillis(System.currentTimeMillis());
    // Set Alarm for next 10 seconds
    time.add(Calendar.SECOND, 10);
    alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(),
            pendingIntent);
}
在androidmanifest.xml中,我使用了以下代码:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <receiver android:name=".MyAlarmReceiver" />

    <activity
        android:name=".AlarmSampleActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>


谢谢大家的帮助

请显示AndroidManifest.xml您可能想发布您认为应该触发接收者的代码。我已经在我的帖子中包含了我的AndroidManifest和触发警报的代码…感谢您的回复!我已经在我的帖子中包含了触发警报的清单文件和代码。我已经使用了。但是我应该在哪里包含你发布的第二个代码片段呢?我是android新手。请帮助我…@Kiruthika:在你的
startAlert
中,替换
Intent Intent=new Intent(这是MyBroadcastReceiver.class)带有
意图意图=新意图(“xyz.abc.YOUR_ACTION”)@ccheneson:好的,我明白了……谢谢!
public void setupAlarm() {
    AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, MyAlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
            intent, 0);
    Calendar time = Calendar.getInstance();
    time.setTimeInMillis(System.currentTimeMillis());
    // Set Alarm for next 10 seconds
    time.add(Calendar.SECOND, 10);
    alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(),
            pendingIntent);
}
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <receiver android:name=".MyAlarmReceiver" />

    <activity
        android:name=".AlarmSampleActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>