Android設定壁紙和建立案頭表徵圖,android壁紙
寫了個小Demo,實現了設定壁紙和建立案頭表徵圖的邏輯:
建立壁紙比較簡單,將Drawable轉為Bitmap,然後直接用setWallpaper就行了:
Bitmap bitmap = BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.wallpaper); try { Main.this.setWallpaper(bitmap); } catch (IOException e) { e.printStackTrace(); }
建立案頭表徵圖:
if (!hasShortcut()) { addShortcut(); } else { Toast.makeText(Main.this, "案頭表徵圖已存在", Toast.LENGTH_SHORT).show(); }
建立和刪除案頭表徵圖:
/** * 為程式建立案頭表徵圖 */ private void addShortcut() { Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));//捷徑的名稱 shortcut.putExtra("duplicate", false); //不允許重複建立 Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); shortcutIntent.setClassName(this, this.getClass().getName()); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); //表徵圖 Intent.ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); sendBroadcast(shortcut); } /** * 刪除應用的案頭表徵圖 */ private void delShortcut() { Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT"); //表徵圖名稱 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); String appClass = this.getPackageName() + "." + this.getLocalClassName(); ComponentName comp = new ComponentName(this.getPackageName(), appClass); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp)); sendBroadcast(shortcut); }
判斷案頭表徵圖是否已經存在:
private boolean hasShortcut() { boolean isInstallShortcut = false; final ContentResolver cr = Main.this.getContentResolver(); final String AUTHORITY = "com.android.launcher.settings"; final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true"); Cursor c = cr.query(CONTENT_URI, new String[]{"title", "iconResource"}, "title=?", new String[]{Main.this.getString(R.string.app_name).trim()}, null); if (c != null && c.getCount() > 0) { isInstallShortcut = true; } return isInstallShortcut; }
轉載請註明出處:周木水的CSDN部落格 http://blog.csdn.net/zhoumushui
我的GitHub:周木水的GitHub https://github.com/zhoumushui