Android O添加桌面快捷方式的示例
手机升级到安卓O后,突然发现创建快捷方式的功能失效了,查询一番后发现:安卓O要使用ShortcutManager来创建快捷方式。
安卓N及以下版本:
IntentaddShortcutIntent=newIntent("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));
//设置关联程序
IntentlauncherIntent=newIntent(Settings.ACTION_DATA_ROAMING_SETTINGS);//设置网络页面intent
//设置关联程序
//IntentlauncherIntent=newIntent(Intent.ACTION_MAIN);
//launcherIntent.setClass(MainActivity.this,MainActivity.class);
//launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);
addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,launcherIntent);
//发送广播
sendBroadcast(addShortcutIntent);
安卓O:
ShortcutManagerscm=(ShortcutManager)getSystemService(SHORTCUT_SERVICE);
IntentlauncherIntent=newIntent(Settings.ACTION_DATA_ROAMING_SETTINGS);//设置网络页面intent
ShortcutInfosi=newShortcutInfo.Builder(this,"dataroam")
.setIcon(Icon.createWithResource(this,R.drawable.ic_perm_data_setting_black_24dp))
.setShortLabel("网络设置")
.setIntent(launcherIntent)
.build();
assertscm!=null;
scm.requestPinShortcut(si,null);
那如果要两者兼顾呢,则可以如下这样写:
//添加快捷方式
privatevoidaddShortcut(){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
ShortcutManagerscm=(ShortcutManager)getSystemService(SHORTCUT_SERVICE);
IntentlauncherIntent=newIntent(Settings.ACTION_DATA_ROAMING_SETTINGS);//设置网络页面intent
ShortcutInfosi=newShortcutInfo.Builder(this,"dataroam")
.setIcon(Icon.createWithResource(this,R.drawable.ic_perm_data_setting_black_24dp))
.setShortLabel("网络设置")
.setIntent(launcherIntent)
.build();
assertscm!=null;
scm.requestPinShortcut(si,null);
}else{
IntentaddShortcutIntent=newIntent("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));
//设置关联程序
IntentlauncherIntent=newIntent(Settings.ACTION_DATA_ROAMING_SETTINGS);//设置网络页面intent
//设置关联程序
//IntentlauncherIntent=newIntent(Intent.ACTION_MAIN);
//launcherIntent.setClass(MainActivity.this,MainActivity.class);
//launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);
addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,launcherIntent);
//发送广播
sendBroadcast(addShortcutIntent);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。