我在锁屏小部件上有一个按钮,我希望该按钮在按下时启动一个活动。如果屏幕被锁定,我希望活动出现在锁定屏幕上,而用户无需输入 PIN 或图案或其他任何内容,并且当用户离开活动时,锁定屏幕应该重新出现。
我知道,如果我从 ADB shell手动启动它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 产生任何效果之前要求输入PIN 。FLAG_SHOW_WHEN_LOCKED
有没有办法告诉Android我想在屏幕仍然锁定时启动活动?也许我可以在我的Intent
or上设置一个标志PendingIntent
?