时间:2021-05-20
手机升级到安卓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); }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android添加(创建)、删除及判断是否存在桌面快捷方式的方法。分享给大家供大家参考。具体实现方法如下:/***判断桌面是否已添加快捷方式**@
win10怎么在桌面上添加快捷方式?win10怎么添加桌面快捷方式?当我们在win10系统安装程序时,发现桌面上没有该程序的快捷方式,那怎么添加桌面快捷方式
win10怎么在桌面上添加快捷方式?win10怎么添加桌面快捷方式?当我们在win10系统安装程序时,发现桌面上没有该程序的快捷方式,那怎么添加桌面快捷方式
本文实例讲述了Android编程添加快捷方式(Short)到手机桌面的方法。分享给大家供大家参考,具体如下:权限要在手机桌面上添加快捷方式,首先需要在manif
本文实例讲述了Android编程实现向桌面添加快捷方式的方法。分享给大家供大家参考,具体如下:有时候为了使用方便,需要在桌面上添加快捷方式,下面是两种添加快捷方