首页 > 系统 > Android > 正文

Android O添加桌面快捷方式的示例

2019-10-22 18:17:02
字体:
来源:转载
供稿:网友

手机升级到安卓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); }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表