2017-10-11 4 views
0

アラームアクティビティのようなものを作りたいと思っていますが、特定のプッシュ通知に対してのみトリガしました。 私は、回答をherethere(と私がここでは参照できないほど多く)組み合わせて、それを達成するために私の髪を引っ張ってきました。今私はすでにロック画面上のアクティビティを表示することができますが、私はアラームを閉じるためにonClickイベントリスナーを取得することに固執しています。Android、アクティビティはすでにロック画面をオーバーしていますが、onCLickイベントはありません

これまでのところ、ここに私のコードです:

それが私の活動ののonCreateです:マニフェストの

Window window = getWindow(); 
    window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 
      | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON 
      | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
      | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
      | WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
    setContentView(R.layout.alarm); 
    ButterKnife.bind(this); 
    PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "Alarm"); 
    wakeLock.acquire(); 
    dismissButton.setOnClickListener(v -> Log.w("button", "Clicked")); 

活動:

<activity android:name=".{package}.Alarm" 
     android:showOnLockScreen="true" 
     android:theme="@style/AppTheme.WhiteAccent" 
     android:screenOrientation="sensorPortrait"/> 

と私は私のnotificationService

からの私の活動を呼び出すところ、それはです
Intent intent = new Intent(this, MewsAlarm.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intent.putExtra("judul", data.get("title")); 
     startActivity(intent); 

私は間違っていましたか?

私は自分の電話でしかテストしません(4.4.2)ので、他のデバイスにアクティビティが表示されることはわかりません。しかし、本当に、誰かが私を助けてくれますか?

+0

ボタンをクリックすると、これがログに表示されますか? Log.w( "button"、 "Clicked") – HomeIsWhereThePcIs

+0

私はそれがあなたのwindowmanagerフラグにあると信じています。私が思い出したように、WindowManager.LayoutParams.TYPE_SYSTEM_ALERTはonTouchイベントを受け取ることを許可しません。代わりにWindowManager.LayoutParams.TYPE_PHONEを試してみる価値があるかもしれません。 ドキュメントhttps://developer.android.com/reference/android/view/WindowManager.LayoutParams.htmlでは、WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAYを使用してください。 編集:参考https://stackoverflow.com/a/9101977/ 2104990 –

+0

@ Xenolionはい、サービスはいつでもアクティビティを開始できます。 –

答えて

0

は、私は徹底的に関連するトピックを検索していないので、私はこっちの答えを見つけ、提案のみんなのために私の悪いをありがとう:

https://stackoverflow.com/a/4482868/7852331

ので、私はちょうど

 WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH 
を追加します上記の私のフラグに

、そしてvoilaが私はclickイベントを取得します。

関連する問題