您的位置:首页 > 移动开发 > Android开发

android:在一个应用中创建其它应用的快捷启动方式Launcher

2015-01-09 20:31 656 查看
在Activity中调用:

首先判断是否已经有此icon:

private boolean hasShortcut(final String appName) {
boolean isInstallShortcut = false;
final ContentResolver cr = 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[] { appName.trim() }, null);
if (c != null && c.getCount() > 0) {
isInstallShortcut = true;
}
return isInstallShortcut;
}


创建icon:

/**
* 为程序创建桌面快捷方式
*/
private void addShortcut(final GameInfo gameInfo) {
final String packageName = gameInfo.getPackageName();
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.setPackage(packageName);
List<ResolveInfo> apps = getPackageManager().queryIntentActivities(resolveIntent, 0);
PackageInfo pInfo = null;
try {
pInfo = getPackageManager().getPackageInfo(packageName, PackageManager.GET_META_DATA);
if (pInfo != null) {
if (0 != (pInfo.applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE)) {
return;
}
}
} catch (NameNotFoundException e) {
Log.e(TAG, Log.getStackTraceString(e));
}
if (apps.size() == 0) {
Toast.makeText(this, "无法创建快捷方式", Toast.LENGTH_SHORT).show();
return;
}
ResolveInfo ri = apps.iterator().next();
if (ri != null) {
Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, gameInfo.getName());
shortcut.putExtra("duplicate", false);// 不允许重复创建
ComponentName cn = new ComponentName(packageName, ri.activityInfo.name);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(cn));
// 显示的图标
Bitmap iconBitmap = ((BitmapDrawable)pInfo.applicationInfo.loadIcon(getPackageManager())).getBitmap();
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconBitmap);
// 发送广播用以创建shortcut
this.sendBroadcast(shortcut);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: