アラームアクティビティのようなものを作りたいと思っていますが、特定のプッシュ通知に対してのみトリガしました。 私は、回答をhereとthere(と私がここでは参照できないほど多く)組み合わせて、それを達成するために私の髪を引っ張ってきました。今私はすでにロック画面上のアクティビティを表示することができますが、私はアラームを閉じるために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)ので、他のデバイスにアクティビティが表示されることはわかりません。しかし、本当に、誰かが私を助けてくれますか?
ボタンをクリックすると、これがログに表示されますか? Log.w( "button"、 "Clicked") – HomeIsWhereThePcIs
私はそれがあなたの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 –
@ Xenolionはい、サービスはいつでもアクティビティを開始できます。 –