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

在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);
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值