首页 > 代码库 > (8)Launcher3客制化之ContentProvider内容提供者,实现其他应用修改数据库更新等操作

(8)Launcher3客制化之ContentProvider内容提供者,实现其他应用修改数据库更新等操作

首先添加两个权限

 <uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS"/>
 <uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS"/>

这两个是修改 桌面的数据库的权限

不添加就修改不了哦

直接通过内容提供者获取数据,

	static ArrayList<ShortcutInfo> getItemsInLocalCoordinates(Context context) {
        ArrayList<ShortcutInfo> items = new ArrayList<ShortcutInfo>();
        final ContentResolver cr = context.getContentResolver();
        Cursor c = cr.query(LauncherSettings.Favorites.CONTENT_URI, new String[] {
                LauncherSettings.Favorites.ITEM_TYPE, LauncherSettings.Favorites.CONTAINER,
                LauncherSettings.Favorites.SCREEN, LauncherSettings.Favorites.CELLX, LauncherSettings.Favorites.CELLY,
                LauncherSettings.Favorites.SPANX, LauncherSettings.Favorites.SPANY ,LauncherSettings.Favorites.TITLE,LauncherSettings.Favorites.INTENT}, null, null, null);

        final int itemTypeIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ITEM_TYPE);
        final int containerIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.CONTAINER);
        final int screenIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SCREEN);
        final int cellXIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.CELLX);
        final int cellYIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.CELLY);
        final int spanXIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SPANX);
        final int spanYIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SPANY);
        final int titleIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.TITLE);
        final int intenIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
        try {
            while (c.moveToNext()) {
            	ShortcutInfo item = new ShortcutInfo();
                item.cellX = c.getInt(cellXIndex);
                item.cellY = c.getInt(cellYIndex);
                item.spanX = Math.max(1, c.getInt(spanXIndex));
                item.spanY = Math.max(1, c.getInt(spanYIndex));
                item.container = c.getInt(containerIndex);
                item.itemType = c.getInt(itemTypeIndex);
                item.screenId = c.getInt(screenIndex);
                item.title=c.getString(titleIndex);
                if(c.getString(intenIndex)!=null){
                	 item.intent=new Intent(c.getString(intenIndex));
                }
               
                items.add(item);
            }
        } catch (Exception e) {
            items.clear();
        } finally {
            c.close();
        }

        return items;
    }
修改内容同理通过对于的URL进行修改,

具体我就不进行代码编写了。

(8)Launcher3客制化之ContentProvider内容提供者,实现其他应用修改数据库更新等操作