1

私は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"/> 

、私はまたとし、ウェイクロックせずにこれらの事をやってみました。

  1. ロック状態になると設定を変更できますか?

  2. これが発生するのは何ですか?私はそれがちょうど私が見ている以上簡単なものだと賭ける。

おかげで、 ケリー

答えて

0

は現在、これらは、これが機能するために私が使用している携帯電話の状態です。私はそれを動作させるものは、電話の状態を変更することだと思う。うまくいけば、これは誰かを助けることができる。

BTW。それは実際には、このためのGoogleドキュメントの説明のいくつかの痛みです。誰かが(私はこれが面白い質問であることを知っているより良い場所を知っているので、彼らはGoogleのドキュメントです)は、携帯電話のユーザーのアクセス許可を説明します。

他にもう1つ。何度か読んだ後、電話の状態の変更が将来の動作で変更されていることに注意してください。基本的に隠されている/文書化されていないクラス/インタフェースは、2.2のように使用できます。

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> 

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/> 

<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"/> 
関連する問題