博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android O添加桌面快捷方式
阅读量:6854 次
发布时间:2019-06-26

本文共 3356 字,大约阅读时间需要 11 分钟。

手机升级到安卓O后,突然发现创建快捷方式的功能失效了,查询一番后发现:安卓O要使用ShortcutManager来创建快捷方式。

安卓N及以下版本:

Intent addShortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");//"com.android.launcher.action.INSTALL_SHORTCUT"// 不允许重复创建addShortcutIntent.putExtra("duplicate", false);// 经测试不是根据快捷方式的名字判断重复的// 应该是根据快链的Intent来判断是否重复的,即Intent.EXTRA_SHORTCUT_INTENT字段的value// 但是名称不同时,虽然有的手机系统会显示Toast提示重复,仍然会建立快链// 屏幕上没有空间时会提示// 注意:重复创建的行为MIUI和三星手机上不太一样,小米上似乎不能重复创建快捷方式// 名字addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "网络设置");// 图标addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,        Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_perm_data_setting_black_24dp));// 设置关联程序Intent launcherIntent = new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);//设置网络页面intent// 设置关联程序// Intent launcherIntent = new Intent(Intent.ACTION_MAIN);// launcherIntent.setClass(MainActivity.this, MainActivity.class);// launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launcherIntent);// 发送广播sendBroadcast(addShortcutIntent);

安卓O:

ShortcutManager scm = (ShortcutManager) getSystemService(SHORTCUT_SERVICE);Intent launcherIntent = new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);//设置网络页面intentShortcutInfo si = new ShortcutInfo.Builder(this, "dataroam")        .setIcon(Icon.createWithResource(this, R.drawable.ic_perm_data_setting_black_24dp))        .setShortLabel("网络设置")        .setIntent(launcherIntent)        .build();assert scm != null;scm.requestPinShortcut(si, null);

那如果要两者兼顾呢,则可以如下这样写:

//添加快捷方式private void addShortcut() {    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {        ShortcutManager scm = (ShortcutManager) getSystemService(SHORTCUT_SERVICE);        Intent launcherIntent = new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);//设置网络页面intent        ShortcutInfo si = new ShortcutInfo.Builder(this, "dataroam")                .setIcon(Icon.createWithResource(this, R.drawable.ic_perm_data_setting_black_24dp))                .setShortLabel("网络设置")                .setIntent(launcherIntent)                .build();        assert scm != null;        scm.requestPinShortcut(si, null);    } else {        Intent addShortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");//"com.android.launcher.action.INSTALL_SHORTCUT"        // 不允许重复创建        addShortcutIntent.putExtra("duplicate", false);// 经测试不是根据快捷方式的名字判断重复的        // 应该是根据快链的Intent来判断是否重复的,即Intent.EXTRA_SHORTCUT_INTENT字段的value        // 但是名称不同时,虽然有的手机系统会显示Toast提示重复,仍然会建立快链        // 屏幕上没有空间时会提示        // 注意:重复创建的行为MIUI和三星手机上不太一样,小米上似乎不能重复创建快捷方式        // 名字        addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "网络设置");        // 图标        addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,                Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_perm_data_setting_black_24dp));        // 设置关联程序        Intent launcherIntent = new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);//设置网络页面intent        // 设置关联程序//        Intent launcherIntent = new Intent(Intent.ACTION_MAIN);//        launcherIntent.setClass(MainActivity.this, MainActivity.class);//        launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);        addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launcherIntent);        // 发送广播        sendBroadcast(addShortcutIntent);    }}

转载地址:http://hwfyl.baihongyu.com/

你可能感兴趣的文章
阿里云发布Apsara SA系列混合云存储阵列
查看>>
GoJS教程:链接模版
查看>>
QListWidget方式显示缩略图
查看>>
金三银四:蚂蚁金服JAVA后端面试题及答案之二面
查看>>
Ubuntu 外网不通解决方案
查看>>
OSChina 周六乱弹 —— 历史总是惊人的相似
查看>>
MySQL 大小写
查看>>
Lync 2013部署图片赏析-证书服务安装配置
查看>>
HTML5 本地缓存 (web存储)
查看>>
tomcat redis session共享(包含redis安全设置)
查看>>
iptables中DNAT、SNAT和MASQUERADE的作用
查看>>
kvm命令学习记录
查看>>
小菜鸡进阶之路-First week
查看>>
ORACLE 10g SYSAUX表空间快速增长之WRH$_ACTIVE_SESSION_HISTORY篇
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
子数组的和的最大值(包括升级版的首尾相连数组)
查看>>
LeetCode - Nth Highest Salary
查看>>
9.ORM数据访问
查看>>
/dev/null &
查看>>