AI智能
改变未来

Android 使用 shortcut 创建应用快捷方式

App的快捷方式分为三种:静态快捷方式、动态快捷方式、固定快捷方式

静态快捷方式

静态快捷方式直接在xml文件中定义即可,首先在res\\xml文件夹下创建名为shortcut.xml的文件,并填入如下代码

shortcut.xml<?xml version=\"1.0\" encoding=\"utf-8\"?><shortcuts xmlns:android=\"http://schemas.android.com/apk/res/android\"><shortcutandroid:shortcutId=\"compose1\"android:enabled=\"true\"android:icon=\"@drawable/ic_launcher_background\"android:shortcutShortLabel=\"@string/compose_shortcut_short_label1\"android:shortcutLongLabel=\"@string/compose_shortcut_long_label1\"android:shortcutDisabledMessage=\"@string/compose_disabled_message1\"><intentandroid:action=\"android.intent.action.VIEW\"android:targetPackage=\"com.example.myapplication\"android:targetClass=\"com.example.myapplication.ActivityTest\" /><categories android:name=\"android.shortcut.conversation\" /></shortcut><\\shortcuts>

其中

shortcutId	这是必须填写的值,此值必须唯一,否则会将两个相同id的快捷方式识别为同一个enable		该快捷方式是否可用icon		该快捷方式显示的小图标shortcutShortLabel	该值必须为String.xml文件中定义的值,是对快捷方式的简短描述,如果LongLabel的描述过长则会显示ShortLabelshortcutLongLabel	该值必须为String.xml文件中定义的值,是对快捷方式的描述,当描述过长的时候将会显示ShortLabel中的信息shortcutDisableMessage	当用户尝试使用被禁用的快捷方式的时候显示的信息,向用户显示为什么被禁用

然后在AndroidManifest文件的activity标签中将shortcut添加进去

<activity android:name=\".MainActivity\"><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>

这样再启动app,长按图标,就会有这样的效果(如果系统支持的话)

如果需要多个快捷方式的话,只需要在shortcut.xml文件中再添加一个就好了

<?xml version=\"1.0\" encoding=\"utf-8\"?><shortcuts xmlns:android=\"http://schemas.android.com/apk/res/android\"><shortcutandroid:shortcutId=\"compose1\"android:enabled=\"true\"android:icon=\"@drawable/ic_launcher_background\"android:shortcutShortLabel=\"@string/compose_shortcut_short_label1\"android:shortcutLongLabel=\"@string/compose_shortcut_long_label1\"android:shortcutDisabledMessage=\"@string/compose_disabled_message1\"><intentandroid:action=\"android.intent.action.VIEW\"android:targetPackage=\"com.example.myapplication\"android:targetClass=\"com.example.myapplication.ActivityTest\" /><categories android:name=\"android.shortcut.conversation\" /></shortcut><shortcutandroid:shortcutId=\"compose2\"android:enabled=\"true\"android:icon=\"@drawable/ic_launcher_background\"android:shortcutShortLabel=\"@string/compose_shortcut_short_label1\"android:shortcutLongLabel=\"@string/compose_shortcut_long_label1\"android:shortcutDisabledMessage=\"@string/compose_disabled_message1\"><intentandroid:action=\"android.intent.action.VIEW\"android:targetPackage=\"com.example.myapplication\"android:targetClass=\"com.example.myapplication.MainActivity\" /><categories android:name=\"android.shortcut.conversation\" /></shortcut></shortcuts>

动态快捷方式

动态快捷方式是可以在程序运行中进行创建的,创建一个ActivityTest作为第二个页面,在显示页面的时候动态创建快捷方式

ActivityTest.javapublic class ActivityTest extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test);ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);ShortcutInfo shortcut = new ShortcutInfo.Builder(this, \"compose3\").setShortLabel(\"快捷方式二\").setLongLabel(\"这是快捷方式二\").setIcon(Icon.createWithResource(this, R.drawable.ic_launcher_foreground)).setIntent(new Intent(ActivityTest.this, ActivityTest2.class).setAction(Intent.ACTION_VIEW)).build();shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));}}

在刚安装和打开第一个界面的时候快捷方式是这样的

在打开第二个界面之后

快捷方式就会变成这样了,多了一个动态创建的快捷方式。

固定快捷方式

固定快捷方式可以将快捷方式以图标的方式固定在桌面上,创建第三个界面ActivityTest2来创建固定的快捷方式

public class ActivityTest2 extends AppCompatActivity {Context mContext;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test2);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {ShortcutManager shortcutManager =mContext.getSystemService(ShortcutManager.class);assert shortcutManager != null;if (shortcutManager.isRequestPinShortcutSupported()) {ShortcutInfo pinShortcutInfo =new ShortcutInfo.Builder(mContext, \"compose4\").setShortLabel(\"这是快捷方式三\").setLongLabel(\"这是快捷方式三\").setDisabledMessage(\"你真的要禁用吗?\").setIntent(new Intent(ActivityTest2.this, ActivityTest2.class).setAction(Intent.ACTION_VIEW)).setIcon(Icon.createWithResource(mContext, R.drawable.ic_launcher_foreground)).build();// 可以在此创建intent来通知你用户创建了这个固定快捷方式Intent pinnedShortcutCallbackIntent =shortcutManager.createShortcutResultIntent(pinShortcutInfo);//在此完善你接收到广播之后的动作PendingIntent successCallback = PendingIntent.getBroadcast(mContext, /* request code */ 0,pinnedShortcutCallbackIntent, /* flags */ 0);shortcutManager.requestPinShortcut(pinShortcutInfo,successCallback.getIntentSender());}}});}}

然后在打开第三个页面的时候,就可以点击按钮来创建固定快捷方式

那么快捷方式就会出现在屏幕上了

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Android 使用 shortcut 创建应用快捷方式