私はあなたが何を望んでいるのか理解していると思います。そうでない場合は、私の答えを無視してください。
まず、これらのアクセス許可を に追加しますAndroidManifest.xml
。
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
私のアプリでは、アクティビティごとにユーザーにメッセージを表示し、次に でonCreate()
次のコードを使用しました。
import android.app.KeyguardManager;
import android.os.PowerManager;
import android.view.WindowManager;
// ...
private KeyguardManager.KeyguardLock mKeyguardLock;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
KeyguardManager km = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
mKeyguardLock = km.newKeyguardLock(ClassName);
mKeyguardLock.disableKeyguard();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(
PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.FULL_WAKE_LOCK, ClassName);
wl.acquire();
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}// onCreate()
でキーガードを再度有効にしてくださいonDestroy()
。
@Override
protected void onDestroy() {
super.onDestroy();
mKeyguardLock.reenableKeyguard();
}// onDestroy()
これらのコードは、ブログ投稿からコピーしただけです (残念ながら、どこにあるか思い出せません)。そして、それは機能しました(minSdkVersion
= 7、実際のデバイス2.x、エミュレーター<= ICSでテスト済み)。できれば、試してみて、うまくいくかどうか教えてください。
編集
よくわかりませんが、このブログ投稿のようです。