如何从我的小部件创建预安装应用的快捷方式?
答案 0 :(得分:0)
你想要一些静态快捷方式吗?只是预装了应用程序?
这就是我在主屏幕上创建看起来像快捷方式的方式:
RemoteViewsWidget views = new RemoteViewsWidget(context, R.layout.your_layout);
RemoteViewsWidget是RemoteViews的子类。您将希望上下文用于在RemoteViewsWidget类中完成的操作。
在RemoteViewsWidget类的方法中,我为“快捷方式”设置了图像和文本:
setImageViewUri(imageResId, uri);
setTextViewText(textResId, displayName);
其中imageResId是布局中的资源,您希望成为您的thumnail,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);