android判断和创建快捷方式(4.03测试通过)
来源:互联网 发布:网络信息安全项目教程 编辑:程序博客网 时间:2024/04/29 11:17
android判断和创建快捷方式(4.03测试通过)
整理了网上的创建方式的代码,对于快捷方式的判断使用系统api获取当前启动器来处理,这样系统定制过或者启动器不一样也没关系 。
一加权限和声明目标activity
<!-- 创建快捷方式 --> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<activity android:name="com.shortcut.TestActivity" android:configChanges="keyboardHidden|orientation" android:theme="@android:style/Theme.Translucent" > <intent-filter> <action android:name="action.com.shortcut.test" /> </intent-filter> </activity>
二创建代码
/** * 创建快捷方式 * * @param context * @param name 显示名称 * @param url */public static void createShortCut(Context context, String name, String url) {if (hasShortCut(context, name)) { Log.v("createShortCut", name + "快捷方式已存在");return;}final Intent shortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");shortcutIntent.putExtra("duplicate", false);final Parcelable icon = Intent.ShortcutIconResource.fromContext(context,ResourceUtil.getId(context, "drawable", "o2o_game_float_icon"));// 这个参数是启动的activity的actionfinal Intent targetIntent = new Intent("action.com.shortcut.test");// 目标activitytargetIntent.setClassName(context.getPackageName(),"com.shortcut.TestActivity");targetIntent.putExtra("url", url);targetIntent.putExtra("name", name);targetIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, targetIntent);shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);context.sendBroadcast(shortcutIntent);}/** * 判断快捷方式是否已存在 * * @param context * @param name * @return */private static boolean hasShortCut(Context context, String name) {Log.v("LauncherPackageName",getLauncherPackageName(context));String launcherPackage = getLauncherPackageName(context);if (TextUtils.isEmpty(launcherPackage)) {// 查询不到启动器时默认已存在快捷方式,不进行创建return true;}// Log.v("LauncherPackageName", launcherPackage);boolean result = false;final String uriStr = "content://" + launcherPackage+ ".settings/favorites?notify=true";final Uri CONTENT_URI = Uri.parse(uriStr);final Cursor c = context.getContentResolver().query(CONTENT_URI, null,"title=?", new String[] { name }, null);if (c != null && c.getCount() > 0) {result = true;}return result;}/** * 获取正在运行桌面包名(注:存在多个桌面时且未指定默认桌面时,该方法返回"",使用时需处理这个情况) */private static String getLauncherPackageName(Context context) {final Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_HOME);final ResolveInfo res = context.getPackageManager().resolveActivity(intent, 0);if (res.activityInfo == null) {// should not happen. A home is always installed, isn't it?return "";}if (res.activityInfo.packageName.equals("android")) {// 有多个桌面程序存在,且未指定默认项时;return "";} else {return res.activityInfo.packageName;}}
1 0
- android判断和创建快捷方式(4.03测试通过)
- android创建快捷方式和判断是否已创建快捷方式
- Android 判断、创建和删除快捷方式
- Android 判断、创建和删除快捷方式
- Android 创建和删除快捷方式以及判断是否有快捷方式
- Android 创建和删除快捷方式以及判断是否有快捷方式
- android--创建快捷方式和判断是否已经创建
- Android创建快捷方式和判断是否已经创建
- Android创建快捷方式和判断是否已经创建
- android--创建快捷方式和判断是否已经创建
- Android 创建,删除,判断快捷方式
- ANDROID 桌面快捷方式创建,和判断 返回false问题
- android快捷方式创建和判断的实践方法
- Android创建桌面快捷方式和判断当前快捷方式是否已经存在
- Android学习—— 创建和删除快捷方式以及判断是否有快捷方式
- Android 创建,验证和删除桌面快捷方式 【删除快捷方式测试可用】(1)
- android 创建、删除、判断是否存在快捷方式
- Android之快捷方式一——通过应用程序创建快捷方式
- 关于多态的问答题
- ext修改textfield中label的背景色
- 利用RandomAccessFile类 移动文件指针 插入文件内容
- linux开机启动脚本的顺序
- 调用约定_百度百科
- android判断和创建快捷方式(4.03测试通过)
- 数据库课程设计小结
- 好像好想学习php语言啊
- 关于抽象方法的问题
- 使用C++打印hello world
- 女孩常用的起名方法
- log4j
- c++现在就业怎么样啊
- GCD的简单用法