/**
* 判断name这个快捷方式是否已经创建
*
* @param name
* @return
*/
private boolean isCreateShortCut(String name) {
boolean isInstallShortcut = false;
String[] permission = { "com.android.launcher.permission.WRITE_SETTINGS", "com.android.launcher.permission.READ_SETTINGS" };
String AUTHORITY = null;
// 获取当前应用名称
// try {
// final PackageManager pm = getPackageManager();
// title =
// pm.getApplicationLabel(pm.getApplicationInfo(getPackageName(),
// PackageManager.GET_META_DATA)).toString();
// } catch (Exception e) {
// e.printStackTrace();
// }
// 其实快捷方式信息是保存在 AUTHORITY=com.android.launcher的launcher.db的favorites表中
// android默认的 AUTHORITY 在2.2以后是
// com.android.launcher2.settings,但是不同的厂商可能会做不同的修改,所以废弃,在后面代码中进行查询
// if (android.os.Build.VERSION.SDK_INT < 8) {
// AUTHORITY = "com.android.launcher.settings";
// }else{
// AUTHORITY = "com.android.launcher2.settings";
// }
// 由于不同的厂商uri的前缀不同,所以,我们需要去查询provider获取真实的content的uri前缀
for (int i = 0; i < permission.length; i++) {
if ((AUTHORITY = getAuthorityFromPermission(this, permission[i])) != null) {
System.out.println("AUTHORITY: " + AUTHORITY);
break;
}
}
final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true");
Cursor c = getContentResolver().query(CONTENT_URI, new String[] { "title", "iconResource" }, "title=?", new String[] { name }, null);// XXX表示应用名称。
if (c != null && c.getCount() > 0) {
isInstallShortcut = true;
c.close();
} else if(c != null){
c.close();
}
return isInstallShortcut;
}
/**
* 根据指定的permission权限查询authority
*
* @param context
* @param permission
* @return
*/
private 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;
}