2

Google Cloud Messaging を使用して、Android デバイスでメッセージを受信します。セキュリティが有効な状態でデバイスがスリープ モードになっている場合、デバイスに GCM メッセージを表示することは可能ですか。(API > 2.3....4.0 を使用)。

デバイスは、パターンまたは顔認識のいずれかによって保護されます。デバイスの状態に関係なく、GCM メッセージが表示されるようにします。理想的には、デバイスをロックしたままメッセージを表示する必要があります。それが不可能な場合は、デバイスのロックを自動的に解除し、ウェイクアップしてメッセージを表示することができます。

デバイスに GCM からのメッセージを表示するアプリがあります。したがって、私の質問は、たとえばパターン セキュリティを使用してロックされているデバイスにアプリがメッセージを表示することを許可されているかどうかに要約されます。

フィードバックをお待ちしております。

keygaurdmanager が廃止されたため、「FLAG_SHOW_WHEN_LOCKED」を試しましたが、何らかの理由で機能しません。画面は点灯しますが、セキュリティ パターンはオンのままです。

4

1 に答える 1

0

私はあなたが何を望んでいるのか理解していると思います。そうでない場合は、私の答えを無視してください。

まず、これらのアクセス許可を に追加します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でテスト済み)。できれば、試してみて、うまくいくかどうか教えてください。


編集

よくわかりませんが、このブログ投稿のようです。

于 2012-08-01T13:33:04.070 に答える