【Android】ロック画面の上からダイアログを表示させる


Lock-Icon

LINEやFacebookの通知みたいにロック画面の上からでもポップアップで通知を出したい。

用途としてはサービスで常駐していて、新しい情報が来たらサービスからActivityを起動して通知ダイアログを出してお知らせを表示する

導入方法

下記のようにonAttachedToWindowをオーバーライドするだけでいけました。


public class TestActivity extends Activity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		// ダイアログを表示する
		AlertDialog.Builder alertBuilder = new AlertDialog.Builder(
				TestActivity.this);
		alertBuilder.setCancelable(false);
		alertBuilder.setTitle("通知");
		alertBuilder.setMessage("こんにちは!お得な情報があります");
		alertBuilder.setPositiveButton("見る",
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog,
							int which) {
						Uri uri = Uri
								.parse("http://exiz.org/");
						Intent i = new Intent(Intent.ACTION_VIEW, uri);
						startActivity(i);
						dialog.dismiss();
						finish();
					}
				});
		alertBuilder.setNegativeButton("閉じる", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.dismiss();
				finish();
			}
		});
		alertBuilder.create().show();

	}
	
	@Override
	public void onAttachedToWindow() {
	    Window window = getWindow();
	    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON	// スクリーンをONにする
	            | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED		// ロック画面の場合でも表示する
	            | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
	}

}

Android5.0になったらNotification(通知)がロックスクリーンからも見れるので、通知だけなら今後不要になりそう。

オリジナルの挙動をしたい時には使えると思います。

コメントを残す

メールアドレスが公開されることはありません。