如何从我的构件创建预装应用程序的快捷方式?构建已安装应用程序的快捷方式的小部件
0
A
回答
0
你想要一些静态快捷方式吗?只需预先安装应用程序?
这是我创造了什么样子的主屏幕上的快捷方式:
RemoteViewsWidget views = new RemoteViewsWidget(context, R.layout.your_layout);
哪里RemoteViewsWidget是您RemoteViews的子类。您将希望该上下文用于在RemoteViewsWidget类中完成的操作。
在RemoteViewsWidget类的方法,我设置了图片和文字的“捷径”:
setImageViewUri(imageResId, uri);
setTextViewText(textResId, displayName);
哪里imageResId是你想成为您的略图和URI指向布局资源图像(我使用了本地保存的图像源文件)。对于textResId和displayName类似。
setOnClickPendingIntent(layoutViewId, PendingIntent.getActivity(
context, requestCode, intent, flags));
这里,layoutViewId是你的图像视图和文本视图住在父母的布局,这个布局是被选中时什么触发的意图。等待的意图是选择布局时执行的内容 - 只需填写您的上下文,要启动的活动的意图和标志(如有必要)。
要找到你从应用程序需要启动他们什么,你可能想使用PackageManager:
List<ResolveInfo> appInfos = context.getPackageManager().queryIntentActivities(
new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER), 0);
以获取在启动所有应用程序的解决信息的列表。您可以从列表中获得所需的全部内容,以便实现上述setOnClickPendingIntent的意图。如果您只需要这些应用的子集,则可以应用不同的或更多的类别,不同的操作等。或者,您可以只使用已知的软件包或活动。
您已经创建了远程视图后,您需要更新部件,无论是在实用的方法或在您的微件提供者的子类:
views.updateWidget(); // update resources with image, text and intent as above
AppWidgetManager.getInstance(context.getApplicationContext()).updateAppWidget(
widgetId, views);