[java] view plaincopy
- import java.util.List;
- import android.content.ContentResolver;
- import android.content.Context;
- import android.content.pm.PackageInfo;
- import android.content.pm.PackageManager;
- import android.content.pm.ProviderInfo;
- import android.database.Cursor;
- import android.net.Uri;
- import android.util.Log;
- public class LauncherUtils {
- public static void readLauncherDB(Context context) {
- final ContentResolver cr = context.getContentResolver();
- String AUTHORITY = getAuthorityFromPermission(context,
- "com.android.launcher.permission.READ_SETTINGS");
- if (AUTHORITY == null) {
- AUTHORITY = getAuthorityFromPermission(context,
- "com.android.launcher.permission.WRITE_SETTINGS");
- }
- if (AUTHORITY == null) {
- Log.e("", "no authority");
- return;
- }
- Log.e("", "authority:" + AUTHORITY);
- Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY
- + "/favorites?notify=true");
- Cursor c = cr.query(CONTENT_URI, null, null, null, null);
- if (c != null) {
- while (c.moveToNext()) {
- int id = c.getInt(c.getColumnIndex("_id"));
- // 快捷方式的名称
- String title = c.getString(c.getColumnIndex("title"));
- // 快捷方式启动的对象
- String intent = c.getString(c.getColumnIndex("intent"));
- int container = c.getInt(c.getColumnIndex("container"));
- // 快捷方式在哪个屏幕,默认是1
- int screen = c.getInt(c.getColumnIndex("screen"));
- // 快捷方式的位置
- int cellX = c.getInt(c.getColumnIndex("cellX"));
- int cellY = c.getInt(c.getColumnIndex("cellY"));
- int spanX = c.getInt(c.getColumnIndex("spanX"));
- int spanY = c.getInt(c.getColumnIndex("spanY"));
- int itemType = c.getInt(c.getColumnIndex("itemType"));
- int appWidgetId = c.getInt(c.getColumnIndex("appWidgetId"));
- int isShortcut = c.getInt(c.getColumnIndex("isShortcut"));
- int iconType = c.getInt(c.getColumnIndex("iconType"));
- // 快捷方式的图标
- String iconPackage = c.getString(c
- .getColumnIndex("iconPackage"));
- // "iconResource"
- // "icon"
- // "uri"
- // "displayMode"
- int launchCount = c.getInt(c.getColumnIndex("launchCount"));
- // "sortMode"
- int itemFlags = c.getInt(c.getColumnIndex("itemFlags"));
- String log = "id=" + id + "|title=" + title + "|intent="
- + intent + "|container=" + container + "|screen="
- + screen + "|cell=[" + cellX + "," + cellY + "]|"
- + "span=[" + spanX + "," + spanY + "]|itemType="
- + itemType + "|appWidgetId=" + appWidgetId
- + "|isShortcut=" + isShortcut + "|iconType=" + iconType
- + "|iconPackage=" + iconPackage + "|launchCount="
- + launchCount + "|itemFlags=" + itemFlags;
- Log.e("", log);
- }
- }
- }
- /**
- * 获取authority
- * @param context
- * @param permission
- * @return
- */
- static String getAuthorityFromPermission(Context context, String permission) {
- if (permission == null)
- return null;
- List<PackageInfo> packs = context.getPackageManager()
- .getInstalledPackages(PackageManager.GET_PROVIDERS);
- if (packs != null) {
- for (PackageInfo pack : packs) {
- ProviderInfo[] providers = pack.providers;
- if (providers != null) {
- for (ProviderInfo provider : providers) {
- if (permission.equals(provider.readPermission))
- return provider.authority;
- if (permission.equals(provider.writePermission))
- return provider.authority;
- }
- }
- }
- }
- return null;
- }
- }
时间: 2024-10-16 22:55:06