Android アプリケーションで Alarm Manager Service を使用する場合、アプリケーションに必要な権限はどれですか?
アプリケーションが Alarm Manager Service を使用する権限を持っている必要がないように思われることをテストしました。
本当?
Android アプリケーションで Alarm Manager Service を使用する場合、アプリケーションに必要な権限はどれですか?
アプリケーションが Alarm Manager Service を使用する権限を持っている必要がないように思われることをテストしました。
本当?
はい、そうです。特別なサービスを追加する必要はありません。android.permission.RECEIVE_BOOT_COMPLETED
ハンドセットを再起動すると、設定したアラームが失われることに注意してください。そのため、許可が必要な起動時にスケジュールを再設定することをお勧めします。
電話がオフになるまで、10 分ごとに CPU をウェイクします。
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<receiver android:process=":remote" android:name="Alarm"></receiver>
電話の起動時にアラームを繰り返すように設定するには:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
...
<receiver android:name=".AutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
詳細については、 アラーム マネージャの例を参照してください。
Manifest.xml に追加します。
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
...
<receiver android:process=":remote" android:name="Alarm"></receiver>
コード:
package YourPackage;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
public class Alarm extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
wl.acquire();
// Put here YOUR code.
Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example
wl.release();
}
public void SetAlarm(Context context)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi); // Millisec * Second * Minute
}
public void CancelAlarm(Context context)
{
Intent intent = new Intent(context, Alarm.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}
電話の起動時にアラームを繰り返すように設定するには:
Manifest.xml に権限を追加します。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<receiver android:name=".AutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
クリスチャンが言ったことにいくつかのビットを追加したい
権限を使用してもandroid.permission.RECEIVE_BOOT_COMPLETED
、アプリケーションは2.XXデバイスで正しく実行されます。
ただし、4.xデバイスでは、アプリケーションを手動で開始するまで、broadvastレシーバーはブートで動作しません。