📜  如何在 Android 应用中创建静态快捷方式?

📅  最后修改于: 2022-05-13 01:54:56.599000             🧑  作者: Mango

如何在 Android 应用中创建静态快捷方式?

一个应用程序可能包含为用户提供的多种服务,并且为了方便用户快速使用这些服务,使用了快捷方式。应用程序的快捷方式是功能列表(快速服务),可帮助用户轻松快速地跳转到应用程序中的特定功能或活动。根据提供的服务列出和构建快捷方式。当长按应用程序图标时,应用程序的快捷方式(如果它们是明确构建的)可以被视为项目列表,如下所示。

具有可用快捷方式的示例应用程序

在本文中,让我们演示应用程序中各种活动的固定(静态)快捷方式的实现。但首先,我们需要知道这里的静态是什么意思。静态快捷方式是一组在应用程序中硬编码的预定义快捷方式。它们不会随着时间或用户操作而改变。它们是固定的,可以随时访问,即使应用程序没有在后台运行。关于快捷方式,一个应用程序最多只能有 4 个快捷方式。如果在程序中声明了多个快捷方式,则列表中只有前四个快捷方式可用。这是为了改善快捷方式的视觉外观。

应用程序 gif

方法

步骤 1:创建一个新项目

请参阅如何在 Android Studio 中创建/启动新项目以创建空 Activity。请注意,使用Kotlin作为该项目的主要语言。

第 2 步:在 res/xml 文件夹中创建一个 Android 资源文件 (xml)

转到res -> Android 资源文件并创建一个 android 资源文件,如下所示。

安卓资源文件

创建一个文件,我们可以在其中存储所有快捷方式。在我们编写所有快捷方式的地方创建了一个具有 XML 格式的 Android 资源文件。保存此文件的文件路径是res/xml/shortcuts.xml 。无需更改任何其他参数,然后单击OK

安卓资源文件

生成文件后,可以声明快捷方式,但在此之前,在 Android Manifest 中声明元数据以链接 shortcuts.xml文件作为应用程序的资源。

第 3 步:将快捷方式.xml 文件声明为应用程序快捷方式的资源

AndroidManifest.xml文件中,元数据将在 Activity 中声明,如下面的代码所示。

AndroidManifest.xml


  
    
        
        
        
        
            
                
  
                
            
            

            

            
        
    
  


shortcuts.xml

  
    
    
        
    
  
    
    
        
    
  
    
    
        
    
  
    
    
        
    
      


Activity1.xml


  
    
    
  


Activity1.kt
package org.geeksforgeeks.static_shortcuts
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
  
class Activity1 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_1)
    }
}


Activity2.xml


    
    
    
  


Activity2.kt
package org.geeksforgeeks.static_shortcuts
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
  
class Activity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_2)
    }
}


Activity3.xml


    
    
    
  


Activity3.kt
package org.geeksforgeeks.static_shortcuts
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
  
class Activity3 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_3)
    }
}


activity_main.xml


  
    
    
    
    


MainActivity.kt
package org.geeksforgeeks.static_shortcuts
  
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
          
        //Just to check if these buttons starts other activities
  
        // Declaring Buttons
        val btn1 = findViewById


Strings.xml

    Static_Shortcuts
    MainActivity
    Activity 1
    Activity 2
    Activity 3


第 4 步:将 App Gradle 中的 Target SDK 版本设置为 26

只有API 级别 25 及以上的 Android 设备才支持快捷方式。为确保安全,请将targetSDKVersion设置为26

更改 SDK 版本

步骤 5:配置快捷方式.xml 文件以生成不同的快捷方式

由于这是一个 XML 文件,因此该文件的结构将采用分层元素的形式。 是根元素, 元素定义快捷方式的上下文。一个快捷方式主要由 6 个参数和 1 个具有 3 个参数的意图组成。我们现在简要地定义它们中的每一个。

快捷方式元素的参数:

Elements

Description

android:shortcutID

A string literal, which represents the shortcut when a ShortcutManager 

object performs operations on it.

android:enabled

Determines whether the user can interact with the shortcut 

from a supported launcher, either true or false.

android:shortcutShortLabel

 A concise phrase that describes the shortcut’s

 purpose up to 10 characters.

android:shortcutLongLabel

An extended-phrase that describes the shortcut’s

 purpose up to 25 characters.

android:shortcutDisabledMessage 

The message that appears in a supported launcher 

when the user attempts to launch a disabled shortcut.

android:iconDisplaying icon against the shortcut. 

通过右键单击它并单击图像/矢量资源,将在res/drawable文件夹中创建一个图标。请参考下图。

矢量资产

选择矢量资产并选择剪贴画,将其命名为icon.xml ,如下所示。

矢量资产

意图参数:

Parameters

Description

android:actionThe action that the system launches when the user selects the shortcut.
android:targetPackagePackage of the application.
android:targetClassClass of the application where the shortcut wants users to redirect.

shortcuts.xml 文件的代码:

只是为了可视化快捷方式,需要参数shortcutID、enabled、icon、shortcutShortLabel,其余可以忽略。这些值是随机的,并在res/values/ 字符串.xml文件中定义,该文件可在本文后面的部分中找到。在这里,Intents 的行为方式与将用户从一个活动发送到另一个活动时的行为相同。当用户按住应用程序图标 2 秒时,会出现 4 个快捷方式,点击打开应用程序的哪些不同活动。请参阅以下程序中的注释。

快捷方式.xml


  
    
    
        
    
  
    
    
        
    
  
    
    
        
    
  
    
    
        
    
      

第 6 步:为快捷方式创建不同的活动

要检查快捷方式是否将用户引导至不同的活动,请在项目中再添加 3 个活动:活动 1、活动 2 和活动 3。这些活动也在上述代码中实现。以下是这些活动的前端代码。 Activity1.kt、Activity2.kt、Activity3.k t 代码相同。

活动1.xml



  
    
    
  

活动1.kt

package org.geeksforgeeks.static_shortcuts
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
  
class Activity1 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_1)
    }
}

活动2.xml



    
    
    
  

Activity2.kt

package org.geeksforgeeks.static_shortcuts
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
  
class Activity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_2)
    }
}

活动3.xml



    
    
    
  

Activity3.kt

package org.geeksforgeeks.static_shortcuts
  
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
  
class Activity3 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_3)
    }
}

第七步:配置 MainActivity.kt 和 activity_main.xml

MainActivity.kt是应用程序的主要活动和第一个活动。添加了按钮以导航到其他活动。请参阅代码中的注释。

activity_main.xml



  
    
    
    
    

MainActivity.kt

package org.geeksforgeeks.static_shortcuts
  
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
          
        //Just to check if these buttons starts other activities
  
        // Declaring Buttons
        val btn1 = findViewById

第 8 步:修改 Strings.xml 文件

这些字符串值(compose….label1, label2, label3, label0) 在下面声明 res/values/ 字符串.xml定义了在快捷方式列表展开时作为快捷方式标签显示的字符串。

字符串.xml


    Static_Shortcuts
    MainActivity
    Activity 1
    Activity 2
    Activity 3

输出:在模拟器上运行