AndroidShortCuts

先附属一波效果图吧

长按手机应用弹出

点击按钮跳转界面

静态创建界面

第一步
进入AndroidManifest中找到 然后再Activity中加入
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />


            
                

                
            

            
        
    

第二步 在@xml/shortcuts中写
我们直接运行是不可以的,这里我们需要将这个文件生成v25目录下的 Alt+Enter代码提示会帮我们生成

生成v25包

  • android:icon="@drawable/add" ---> 显示图
  • 三个String类型需要自己到String文件下声明
  • android:data ---> 显示传过去的值
  • shortcutShortLabel ---> 显示默认文字
  • android:targetClass / android:targetPackage 都需要换成自己的包名类名
  • android:targetClass ---> 选择跳转到哪个界面
    具体参数配置说明如下:


    参数配置


    
        
        
    

第三布 在新建的Activity中获取传输过来的值

if (getIntent().getData() != null && TextUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW)) {
            Uri uri = getIntent().getData();
            List pathSegments = uri.getPathSegments();
            if (pathSegments != null && pathSegments.size() > 0) {
                tv.setText(pathSegments.get(0));
            }
}

动态创建界面

动态快捷方式提供向指向应用内特定的跳转或数据传递,这些跳转和数据可能会在应用执行中发生变化。
此时需要借助 ShortcutManager 提供的 API 来完成动态快捷方式的相应操作

  • 创建: 使用 setDynamicShortcuts() 重新定义动态快捷方式的完整列表
  • 添加: 使用 addDynamicShortcut() 来扩充现有的动态快捷方式列表
  • 更新: 使用 updateShortcuts() 方法进行更新现有的动态快捷方式列表
  • 删除: 使用 removeDynamicShortcuts() 移除一组动态快捷方式,或者使用 removeAllDynamicShortcuts() 移除所有动态快捷方式

以创建为例,其他差不多,自行尝试,具体的操作可参考下面的代码

1. 创建 ShortcutInfo 对象

@TargetApi(Build.VERSION_CODES.N_MR1)
   private ShortcutInfo createShortcutInfo1() {
     return new ShortcutInfo.Builder(this, ID_DYNAMIC_1)
       .setShortLabel(getString(R.string.dynamic_shortcut_short_label1))
       .setLongLabel(getString(R.string.dynamic_shortcut_long_label1))
       .setIcon(Icon.createWithResource(this, R.drawable.add))
       .setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("http://xiaweizi.cn/")))
       .build();
} 

**2. 调用 setDynamicShortcuts() 覆盖掉之前的,重新设置新的动态快捷方式列表 **

private void setDynamicShortcuts() {
 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1) {
   ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
   List shortcutInfo = new ArrayList<>();
   shortcutInfo.add(createShortcutInfo1());
   shortcutInfo.add(createShortcutInfo2());
   if (shortcutManager != null) {
     shortcutManager.setDynamicShortcuts(shortcutInfo);
   }
 }
}

** 3. 可以配置 label 的字体颜色**

@TargetApi(Build.VERSION_CODES.N_MR1)
private ShortcutInfo createShortcutInfo2() {
 Intent intent = new Intent(this, TestActivity.class);
 intent.setAction(Intent.ACTION_VIEW);
 intent.putExtra("key", "fromDynamicShortcut");
 ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.BLUE);
 String label = getResources().getString(R.string.dynamic_shortcut_short_label2);
 SpannableStringBuilder colouredLabel = new SpannableStringBuilder(label);
 colouredLabel.setSpan(colorSpan, 0, label.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
 return new ShortcutInfo.Builder(this, ID_DYNAMIC_2)
   .setShortLabel(colouredLabel)
   .setLongLabel(getString(R.string.dynamic_shortcut_long_label2))
   .setIcon(Icon.createWithResource(this, R.drawable.link))
   .setIntent(intent)
   .build();
} 

-------------------------------持续更新------------------------------------------

你可能感兴趣的:(AndroidShortCuts)