私はAndroidでの研究で興味深い部分を打ちました。私は私が行くように私は時間を過ごすためにPendingIntentを作成しています。それが消える前に、私は電話をロックする。それが消えたとき。私はそれが実行され、私の携帯電話の振動設定を変更しようとしているのを参照してください。残念ながら、設定は適用されません。ロック状態での振動の設定Android
コード:ロック
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "VibrateTag");
wakeLock.acquire();
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int ringerMode = audio.getRingerMode();
if(ringerMode != AudioManager.RINGER_MODE_NORMAL && item.getVibrate() && item.getVolume() != 0)
{
audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
final String INFO = "INFO";
int vibrateSetting = AudioManager.VIBRATE_SETTING_OFF;
if (item.getVolume() != 0)
{
if (item.getVibrate()) vibrateSetting = AudioManager.VIBRATE_SETTING_ON;
}
else
{
if (item.getVibrate()) vibrateSetting = AudioManager.VIBRATE_SETTING_ONLY_SILENT;
}
Log.e(INFO,"AReceiver attempting to update vibrate to " + vibrateSetting);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, vibrateSetting);
Log.e(INFO,"AReceiver updated vibrate to " + audio.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER));
wakeLock.release();
ログ:
06-27 18:31:00.184: ERROR/INFO(3031): AReceiver attempting to update vibrate to 1
06-27 18:31:00.184: ERROR/INFO(3031): AReceiver updated vibrate to 0
は、私が言ったようにするとき、ロック解除し、使用中に、そのログは、それは、その値を1に変更する場所の変更が成功した示して読んでいました
私の携帯電話をロック解除して、これを行うと動作します。ブロードキャストが機能します(BootUpで起動します)。
私も一緒に使用する権限をロックダウンしようとしました。このことを念頭に置いて今
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
、私はまたとし、ウェイクロックせずにこれらの事をやってみました。
ロック状態になると設定を変更できますか?
これが発生するのは何ですか?私はそれがちょうど私が見ている以上簡単なものだと賭ける。
おかげで、 ケリー