2012-03-09 60 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);