2012-03-09 58 views

回答

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);