Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BroadcastReceiver未将数据发送回主类_Java_Android - Fatal编程技术网

Java BroadcastReceiver未将数据发送回主类

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

我正在使用广播接收器设置警报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 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
权限?哦,是的,这很有效。我确实加了这个,但我把它放在外面了。哈哈,谢谢你:)