如何在桌面新增AppWidget
本人第一次寫部落格,為了做個紀念,特此說明...
今天我來和大家分享下,怎樣將AppWidget新增到介面上。
將AppWidget放到桌面上,需要兩個必要引數ComponentName,AppWidgetId,拿到ComponentName我們一般直接可以使用ComponentName cn = new ComponentName(packageName, className);即可,這個我就不說的很詳細了,第二步我們就的拿到一個AppWidgetId,怎樣獲得呢?在Launcher工程中就可以通過LauncherAppWidgetHost.java 這個類來得到,它是直接繼承了AppWidget·Host類,使用它的方法mAppWidgetHost.allocateAppWidgetId()可以得到AppWidgetId,好了現在我們拿到了兩個必要的引數,最後我們的通過方法AppWidgetManager.getInstance(this)拿到一個AppWidgetManager例項,並呼叫該例項的方法appWidgetManager.bindAppWidgetId(appWidgetId, cn);將兩個引數繫結到一起即可,當然這還不夠...具體做法參照以下程式碼.
ContentResolver cr = this.getContentResolver();
PackageManager packageManager = getPackageManager();
String packageName = packagename;
String className = classname;
boolean hasPackage = true;
ComponentName cn = new ComponentName(packageName, className);
try {
packageManager.getReceiverInfo(cn, 0);
} catch (Exception e) {
String[] packages = packageManager.currentToCanonicalPackageNames(
new String[] { packageName });
cn = new ComponentName(packages[0], className);
try {
packageManager.getReceiverInfo(cn, 0);
} catch (Exception e1) {
hasPackage = false;
}
}
if (hasPackage) {
int spanX = 2;
int spanY = 2;
}
ContentValues values = new ContentValues();
boolean allocatedAppWidgets = false;
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
try {
int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_APPWIDGET);
values.put(Favorites.SPANX, 2);
values.put(Favorites.SPANY, 2);
values.put(Favorites.APPWIDGET_ID, appWidgetId);
values.put(Favorites.CONTAINER, -100);
values.put(Favorites.CELLX, cellX);
values.put(Favorites.CELLY, cellY);
values.put(Favorites.SCREEN, 1);
cr.insert(LauncherSettings.Favorites.CONTENT_URI , values);
allocatedAppWidgets = true;
appWidgetManager.bindAppWidgetId(appWidgetId, cn);
} catch (RuntimeException ex) {
Log.e(TAG, "Problem allocating appWidgetId", ex);
}
return allocatedAppWidgets;
}
相關文章
- 如何在 Linux 桌面新增使用者Linux
- 教你如何在Linux 桌面新增使用者Linux
- 如何在 Ubuntu 桌面手動新增應用快捷方式Ubuntu
- Windows10系統如何在桌面新增備忘錄Windows
- 如何在Android TV 桌面新增自定義頻道/節目Android
- windows10系統如何在桌面新增檔案歷史記錄列表快捷方式Windows
- win10如何新增桌面圖示_win10新增桌面圖示的方法Win10
- ubuntu 給app新增桌面圖示UbuntuAPP
- iOS新增快捷方式到桌面iOS
- Java如何在PDF新增註釋Java
- Solidworks 如何在曲面新增文字Solid
- 如何在linux新增服務Linux
- 如何在Mac桌面設定快捷方式?Mac
- Linux下新增桌面快捷方式Linux
- win10/win7系統如何在桌面新增日曆、天氣、時鐘等小工具Win10Win7
- win10桌面如何麼新增天氣_win10怎麼把天氣新增到桌面Win10
- 如何在nuxt中新增proxyTable代理UX
- PWA - ios 新增到桌面功能(踩坑之路)iOS
- 如何在網頁中新增版本符號網頁符號
- 如何在VUE專案中新增ESLintVueEsLint
- 如何在 Arch Linux 中安裝深度桌面(DDE)Linux
- Win10桌面右鍵新增內容修改Win10
- Android桌面新增快捷方式的實現Android
- win10 天氣如何固定桌面_win10 天氣怎麼新增桌面Win10
- 如何在伺服器上新增虛擬IP?伺服器
- 如何在本地計算機新增svn服務計算機
- 如何在網頁新增網站快捷方式網頁網站
- 如何在React Native中新增自定義字型React Native自定義字型
- 如何在Ubuntu 20.04上安裝Unity桌面環境UbuntuUnity
- 如何在Mac上快速顯示桌面以便快速訪問Mac
- Notification API,為你的網頁新增桌面通知推送API網頁
- 命令列新增我的電腦圖示到桌面命令列
- win10桌面便籤怎麼新增_win10便籤如何固定在桌面Win10
- win10多桌面快捷鍵怎麼使用 win10如何新增多桌面Win10
- win10 如何新增虛擬桌面_win10怎麼使用虛擬桌面Win10
- win10怎麼給桌面新增使用者資料夾_win10在桌面新增使用者檔案的教程Win10
- 如何在Linux中啟動時新增服務Linux
- 如何在DATAGUARD中新增刪除聯機日誌