警报不会触发AlarmReveicer

时间:2014-06-06 02:52:35

标签: android

我在android中编写了一个简单的报警测试,但正如标题中所提到的,AlarmReceiver没有被触发!

我在这里寻求解决方案,但由于我的代码似乎是正确的,所以它们都没有工作......

这是我的代码:

public class AlarmActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm);

    Button salarm = (Button) findViewById(R.id.salarm);
    final AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
    Intent i = new Intent(AlarmActivity.this,AlarmReceiver.class);
    final PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, i, 0);

    salarm.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            alarmManager.set(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime()+(1000*5), pi);
            Toast.makeText(getApplicationContext(), "Alarm set, wait 5 sec", Toast.LENGTH_SHORT).show();

        }
    });

}

清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidtest3"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.androidtest3.MainActivity"
        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="AlarmActivity"/>
    <receiver 
    android:exported = "true"
    android:name = "AlarmReceiver">
    </receiver> <!-- <receiver android:name="AlarmReceiver"/> aurait fait l'affaire --> 

</application>

</manifest>

AlarmReceiver类:

public class AlarmReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    Toast.makeText(context, "pending intent received !", Toast.LENGTH_SHORT).show();

}

}
如果您能解释一下您建议的任何解决方案,那将会有所帮助。

感谢名单

1 个答案:

答案 0 :(得分:2)

可能没有发生,因为时间值不正确。如果您要使用RTC_WAKEUP类型的闹钟,请使用System.currentTimeMillis()加上您的额外时间来获取时间。现在你正在使用经过的时间,这与RTC挂钟时间不同。