我有一个 keyguard 应用程序小部件,我在其中启动了几个不同的 Intent。看来我可以启动 /system 应用程序(mms、设置等)。但不是 /data 应用程序(例如 chrome)
我定义了以下 PendingIntentTemplate :
Intent startApplicationIntent = new Intent();
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, startApplicationIntent, 0);
mainLayout.setPendingIntentTemplate(R.id.stackview, pendingIntent);
在我的 RemoteViewsFactory 中,我有以下 FillInIntent:
Intent i = pm.getLaunchIntentForPackage(pkgName);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.setAction(Intent.ACTION_MAIN);
stackviewRemoteView.setOnClickFillInIntent(R.id.stackview_image, i);
没有错误,意图只是解锁了键盘保护。它也绝对不是 null,因为 toString() 方法显示以下内容:
Intent { act=android.intent.action.MAIN cat=
[android.intent.category.LAUNCHER] flg=0x10000000
pkg=com.android.chrome
cmp=com.android.chrome/com.google.android.apps.chrome.Main }
对于非系统应用程序,我需要做些什么特别的事情吗?我认为 getLaunchIntentForPackage 会为我提供启动应用程序所需的一切,就像从主屏幕选择它时启动应用程序一样。