ロック画面ウィジェットにボタンがあり、ボタンを押すとアクティビティを起動したいのですが。画面がロックされている場合、ユーザーがPINやパターンなどを入力しなくても、アクティビティがロック画面上に表示されるようにします。ユーザーがアクティビティを離れると、ロック画面が再表示されます。
について知っていますが、ADBシェルから手動で起動すると、ロック画面WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
にアクティビティが表示されます。am start
問題は、ウィジェットのボタンを押すと、アクティビティが作成される前にロック解除PINを入力するようになることです。
ウィジェットプロバイダーに次のコードがあります。
@Override
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, final int[] appWidgetIds) {
for (final int appWidgetId : appWidgetIds) {
// Get the RemoteViews for controlling this widget instance.
final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget);
// Construct an intent to launch the activity.
final Intent intent = new Intent(context, MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Attach the intent to the widget's button.
final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.my_button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
そしてここにコードがありますMyActivity
:
public MyActivity() {
Log.d(TAG, "Activity instantiated");
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Allow this activity to appear over the lock screen.
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
setContentView(R.layout.my_activity);
}
ウィジェットのボタンを押すと、ロック解除PINの入力を求められます。アクティビティのコンストラクターのログメッセージは、PINを入力するまで表示されません。つまり、Androidは、が効果を発揮する前にPINを要求することを決定していますFLAG_SHOW_WHEN_LOCKED
。
画面がロックされたままアクティビティを起動することをAndroidに通知する方法はありますか?Intent
たぶん私が自分のまたはに設定できるフラグPendingIntent
?