Java BroadcastReceiver未将数据发送回主类
我正在使用广播接收器设置警报alaret,但由于某些原因,它无法工作Java BroadcastReceiver未将数据发送回主类,java,android,Java,Android,我正在使用广播接收器设置警报alaret,但由于某些原因,它无法工作 public class SimpleSleepActivity extends Activity { /** Called when the activity is first created. */ Button setAlarm, setTimer; int hours = 1, alarmSec = 10; Toast mToast; public void onCreate(Bundle savedInstanc
public class SimpleSleepActivity extends Activity {
/** Called when the activity is first created. */
Button setAlarm, setTimer;
int hours = 1, alarmSec = 10;
Toast mToast;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setAlarm = (Button) findViewById(R.id.bSetAlarm);
setTimer = (Button) findViewById(R.id.bSetTimer);
setTimer.setOnClickListener(mAlarmFromNow);
}
private OnClickListener mAlarmFromNow = new OnClickListener() {
public void onClick(View v) {
// When the alarm goes off, broadcast an Intent to the
// BroadcastReceiver. This is an Intent with an explicit class
// name to have a receiver instantiated and called, and then
// create an IntentSender to have the intent executed as a broadcast.
Intent intent = new Intent(SimpleSleepActivity.this,
AlarmFromNow.class);
PendingIntent sender = PendingIntent.getBroadcast(
SimpleSleepActivity.this, 0, intent, 0);
// Finding the current time and setting and alarm for XX seconds
// from that time
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, alarmSec);
// Scheduling the alarm
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
if (mToast != null) {
mToast.cancel();
}
mToast = Toast.makeText(SimpleSleepActivity.this,
//Show the user what they imputed
"The alarm will go off in " + alarmSec + " Seconds", Toast.LENGTH_LONG);
mToast.show();
}
};
}
我的另一门课是这门课
public class AlarmFromNow extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
//Display a toast after alarmSec is counted
Toast.makeText(context, R.string.alarm_from_now, Toast.LENGTH_LONG)
.show();
}
}
当我试图在10秒后获得toast通知时,它不会出现。我想不出任何其他原因,它不会工作,我已经看过谷歌的API演示,并密切关注它 我遇到了类似的事情。我必须在机器上设置一个动作,使它正常工作。传入的值并不重要。试试看
Intent intent = new Intent(SimpleSleepActivity.this,
AlarmFromNow.class);
intent.setAction("Doesn't Really Matter");
PendingIntent sender = PendingIntent.getBroadcast(
SimpleSleepActivity.this, 0, intent, 0);
更有可能的是,您忘记将广播接收器添加到AndroidManifest.xml中 要使用它,必须在您的清单中声明:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourpackage.name"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="9" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<!-- Your activity here -->
<activity android:name="SimpleSleepActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Your Receiver here -->
<receiver android:name="AlarmFromNow"></receiver>
</application>
</manifest>
注意:我很快用这个清单测试了您的代码,事实上它在10秒后显示了Toast…我对此感到厌倦,但由于某种原因它仍然不起作用嗯,我想不出为什么,可能是在我的AlarmFromNow类中的某个地方?您是否向您的AndroidManifest.xml添加了
SET\u ALARM
权限?哦,是的,这很有效。我确实加了这个,但我把它放在外面了。哈哈,谢谢你:)