赞
踩
快捷方式(ShortCut)可帮助用户快速访问应用程序的各个部分,从而为用户提供特定类型的内容。Android7.1(Android的API版本号大于等于25)开始支持创建应用快捷方式(ShortCut)。
根据官方文档描述,创建快捷方式有三种:
实现步骤:
shortcuts.xml代码
<?xml version="1.0" encoding="utf-8"?> <shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 静态方式创建快捷键 --> <!-- <string name="static_disabled_message">快捷方式不可使用时显示的名字</string> <string name="static_shortcut_long_label">打开主界面</string> <string name="static_shortcut_short_label">测试短标题</string> --> <shortcut android:enabled="true" android:icon="@mipmap/ic_launcher" android:shortcutDisabledMessage="@string/static_disabled_message" android:shortcutId="shortcutId_1" android:shortcutLongLabel="@string/static_shortcut_long_label" android:shortcutShortLabel="@string/static_shortcut_short_label" > <categories android:name="android.shortcut.conversation" /> <!-- 返回目标 activity,注意要放目标 activity在上面--> <intent android:action="example.demo.app.activity.ViewToBitmapActivity" android:targetClass="example.demo.app.activity.ViewToBitmapActivity" android:targetPackage="example.demo.app" /> <!--目标 activity--> <intent android:action="android.intent.action.VIEW" android:targetClass="example.demo.app.activity.MainActivity" android:targetPackage="example.demo.app" /> </shortcut> </shortcuts>
<application android:name="example.demo.app.application.App" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name="example.demo.app.activity.ShortCutsActivity" android:configChanges="orientation|screenSize|keyboardHidden" android:hardwareAccelerated="true" android:theme="@style/SplashAppTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- 静态方式添加快捷键 --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" /> </activity> <!-- 主界面 --> <activity android:name="example.demo.app.activity.MainActivity" /> <!-- 注意,此activity作为静态快捷键方式返回目标页,需要设置 android:permission --> <activity android:name="example.demo.app.activity.ViewToBitmapActivity" android:permission="example.demo.demoapplication.activity.ViewToBitmapActivity" /> </application>
静态创建快捷方式属性说明:
动态快捷键提供了指向应用程序中特定于上下文的特定操作的链接。这些操作可能会在您的应用使用之间发生变化,甚至在您的应用运行时也会发生变化。动态快捷方式的不错选择包括呼叫特定人员,导航至特定位置以及从用户的最后保存点加载游戏。
ShortcutManager API可让您对动态快捷方式完成以下操作:
java代码
@RequiresApi(api = Build.VERSION_CODES.N_MR1) // 版本注解 public class ShortCutsActivity extends AppCompatActivity { @RequiresApi(api = Build.VERSION_CODES.N_MR1) @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); createDynamicShortcuts(); } /** * 动态创建快捷方式 */ private void createDynamicShortcuts() { ShortcutManager systemService = getSystemService(ShortcutManager.class); ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(this, "shortcut_id_1") .setShortLabel("website") .setLongLabel("Open the website") .setIcon(Icon.createWithResource(this, R.mipmap.ic_launcher)) .setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.baidu.com/"))) .build(); systemService.addDynamicShortcuts(Arrays.asList(shortcutInfo)); } }
在Android 8.0(API级别26)及更高版本上,您可以创建固定的快捷方式。与静态和动态快捷方式不同,固定的快捷方式在支持的启动器中显示为单独的图标。图1显示了这两种快捷方式之间的区别。
图1.应用程序快捷方式和固定快捷方式的外观
要使用您的应用将快捷方式固定到受支持的启动器,请完成以下步骤序列:
注意:因为系统会自动对固定的快捷方式执行 备份和还原,所以这些快捷方式的ID应该包含稳定,恒定的字符串或服务器端标识符,而不是本地生成的标识符,这些标识符在其他设备上可能没有意义。
注意:如果用户不允许将快捷方式固定在启动器上,则您的应用不会收到回调。
固定快捷方式后,您的应用可以使用 updateShortcuts()方法更新其内容 。有关更多信息,请阅读 更新快捷方式。
注意:ShortcutManager该类的实例必须 Context.getSystemService(Class)与ShortcutManager.class或 Context.getSystemService(String)一起使用 Context.SHORTCUT_SERVICE。
Java 代码
@RequiresApi(api = Build.VERSION_CODES.N_MR1) public class ShortCutsActivity extends AppCompatActivity { @RequiresApi(api = Build.VERSION_CODES.N_MR1) @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestPinShortcut(); } /** * 固定快捷方式 */ private void requestPinShortcut() { ShortcutManager shortcutManager = getSystemService(ShortcutManager.class); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (shortcutManager != null && shortcutManager.isRequestPinShortcutSupported()) { ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(this, "shortcut_id_pin") .setShortLabel("website") .setLongLabel("Open the website") .setIcon(Icon.createWithResource(this, R.mipmap.ic_launcher)) .setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.baidu.com/"))) .build(); Intent shortcutResultIntent = shortcutManager.createShortcutResultIntent(shortcutInfo); PendingIntent broadcast = PendingIntent.getBroadcast(this, 0, shortcutResultIntent, 0); shortcutManager.requestPinShortcut(shortcutInfo, broadcast.getIntentSender()); } } } }
参考官网Shortcut相关文档链接如下:
欢迎关注我的公众号,不定期推送优质的文章,
微信扫一扫下方二维码即可关注。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。