精华内容
下载资源
问答
  • 创建桌面快捷方式源代码(android),作为app开发参考用。
  • App 快捷方式——创建快捷方式

    千次阅读 2019-01-15 18:53:07
    虽然静态快捷方式的上下文不会更改,并且动态快捷方式的上下文会不断更改,但两种情况下的上下文都是由您的应用程序驱动的。 如果用户选择他们希望您的应用向他们提供内容的方式,例如使用固定的快捷方式,则上下文...

    原文链接

    快捷方式通过帮助用户快速访问 app 的某些部分,为用户提供特定类型的内容。

    如何使用快捷方式提供内容取决于您的用例以及快捷方式的上下文是应用驱动还是用户驱动。 虽然静态快捷方式的上下文不会更改,并且动态快捷方式的上下文会不断更改,但两种情况下的上下文都是由您的应用程序驱动的。 如果用户选择他们希望您的应用向他们提供内容的方式,例如使用固定的快捷方式,则上下文由用户定义。 以下场景演示了每种快捷方式类型的一些用例:

    • 静态快捷方式 最适合在用户与应用程序交互的整个生命周期内使用一致结构链接到内容的应用程序。 由于大多数启动器只能同时显示四个快捷方式,因此静态快捷方式对于常见  activities 非常有用。 例如,如果用户想要以特定方式查看他们的日历或电子邮件,则使用静态快捷方式可确保他们执行常规任务的体验是一致的。
    • 动态快捷方式 用于对上下文敏感的应用程序中的操作。例如,如果您构建的游戏允许用户在启动时从当前级别开始,则需要频繁更新快捷方式。使用动态快捷方式可以在每次用户清除级别时更新快捷方式。
    • 固定快捷方式用于特定的用户驱动操作。 例如,用户可能希望将特定网站固定到启动器。 这很有用,因为它允许用户执行自定义操作,例如一步导航到网站,比使用默认浏览器更快。

    创建静态快捷方式


    静态快捷方式提供到应用程序中常规操作的链接,这些操作在 app 当前版本的整个生命周期中都应保持一致。静态快捷方式的良好的候选者包括查看已发送的消息、设置警报和显示用户当天的锻炼活动。

    要创建静态快捷方式,请完成以下步骤:

    1. 在应用程序的清单文件(AndroidManifest.xml)中,查找其 intent 过滤器设置为 android.intent.action.MAIN action 和android.intent.category.LAUNCHER category 的 activity。

    2. 向此 activity 中添加 <meta-data> 元素,该元素引用定义应用程序快捷方式的资源文件:

      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                package="com.example.myapplication">
        <application ... >
          <activity android:name="Main">
            <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>
        </application>
      </manifest>

       

    3. 创建一个新的资源文件: res/xml/shortcuts.xml

    4. 在此新资源文件中,添加 <shortcuts> 根元素,其中包含 <shortcut> 元素的列表。 每个 <shortcut> 元素都包含有关静态快捷方式的信息,包括其图标,描述标签以及它在应用程序中启动的 intents:

      <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
        <shortcut
          android:shortcutId="compose"
          android:enabled="true"
          android:icon="@drawable/compose_icon"
          android:shortcutShortLabel="@string/compose_shortcut_short_label1"
          android:shortcutLongLabel="@string/compose_shortcut_long_label1"
          android:shortcutDisabledMessage="@string/compose_disabled_message1">
          <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.example.myapplication"
            android:targetClass="com.example.myapplication.ComposeActivity" />
          <!-- 如果您的快捷方式与多个 intent 相关联,请在这里包含它们。 
               列表中的最后一个 intent 决定用户在启动这个快捷方式时看到的内容。 -->
          <categories android:name="android.shortcut.conversation" />
        </shortcut>
        <!-- 在此处指定更多快捷方式。-->
      </shortcuts>

       

    自定义属性值

    以下列表包含静态快捷方式中不同属性的说明。 你必须为 android:shortcutId 和 android:shortcutShortLabel提供值。 其他所有值都是可选的。

    android:shortcutId

    字符串文字,代表 ShortcutManager 对象对其执行操作的快捷方式。

    注意:您不能将此属性的值设置为资源字符串,例如 @string/foo

     

    android:shortcutShortLabel

    描述快捷方式目的的简明短语。 如果可能,将快捷方式的“简短描述”的长度限制为10个字符。

    要获取更多信息,请参见 setShortLabel()

    注意:此属性的值必须是资源字符串,例如 @string/shortcut_short_label

     

    android:shortcutLongLabel

    描述快捷方式目的的扩展短语。 如果有足够的空间,启动器会显示此值而不是 android:shortcutShortLabel。 如果可能,将快捷方式的“长描述”的长度限制为25个字符。

    要获取更多信息,参见 setLongLabel().

    注意:此属性的值必须是资源字符串,例如 @string/shortcut_long_label

     

    android:shortcutDisabledMessage

    当用户尝试启动已禁用的快捷方式时,在支持的启动器中显示的消息。 该消息应向用户解释为什么现在禁用该快捷方式。 如果 android:enabledtrue,则此属性的值无效。

    注意:此属性的值必须是资源字符串,例如 @string/shortcut_disabled_message

     

    android:enabled

    决定用户是否可以从支持的启动器与快捷方式进行交互。android:enabled 的默认值为 true。 如果将其设置为 false,则还应设置 android:shortcutDisabledMessage,以解释禁用快捷方式的原因。 如果您认为不需要提供此类消息,则最简单的方法是从 XML 文件中完全删除该快捷方式。

     

    android:icon

    启动器在显示用户快捷方式时使用的 bitmap(位图) 或自适应图标。 此值可以是图像的路径,也可以是包含图像的资源文件。 尽可能使用自适应图标以提高性能和一致性。

    注意:快捷方式图标不能包含色调。

     

    配置内部元素

    列出应用程序的静态快捷方式的 XML 文件支持每个 <shortcut> 元素中的以下元素。 您必须为您定义的每个静态快捷方式包含一个 intent 内部元素。

    intent

    用户选择快捷方式时系统启动的操作。 此 intent 必须为 android:action 属性提供值。

    注意:此 intent 元素不能包含字符串资源。

    您可以为单个快捷方式提供多个 intent。 有关详细信息,请参阅  Manage multiple intents and activities ,Using intents,和 TaskStackBuilder 类参考。

     

    categories

    为应用程序快捷方式执行的操作类型提供分组,例如创建新的聊天消息。

    有关支持的快捷方式 categories 的列表,请参阅 ShortcutInfo 类引用。

     

    创建动态快捷方式


    动态快捷方式提供指向应用内特定的上下文相关操作的链接。 这些操作可能会在您的应用使用之间发生变化,甚至在您的应用运行时也会发生变化。动态快捷方式的良好候选者包括呼叫特定人员,导航到特定位置,以及从用户的最后保存点加载游戏。

    ShortcutManager API 允许您在动态快捷方式上完成以下操作:

    For more information about performing operations on shortcuts, read Manage shortcuts and the ShortcutManagerreference.有关在快捷方式上执行操作的更多信息,请阅读 Manage shortcuts 和 ShortcutManager 参考。

    以下代码段中显示了创建动态快捷方式并将其与您的 app 相关联的示例:

    注意:必须使用带有参数 ShortcutManager.class Context.getSystemService(Class) 或带有参数 Context.SHORTCUT_SERVICE 的 Context.getSystemService(String) 获取 ShortcutManager 类的实例。

    val shortcutManager = getSystemService<ShortcutManager>(ShortcutManager::class.java)
    
    val shortcut = ShortcutInfo.Builder(context, "id1")
            .setShortLabel("Website")
            .setLongLabel("Open the website")
            .setIcon(Icon.createWithResource(context, R.drawable.icon_website))
            .setIntent(Intent(Intent.ACTION_VIEW,
                    Uri.parse("https://www.mysite.example.com/")))
            .build()
    
    shortcutManager!!.dynamicShortcuts = Arrays.asList(shortcut)

     

    创建固定快捷方式


    要使用您的应用程序将快捷方式固定到支持的启动器,请完成以下步骤:

    1. 使用 isRequestPinShortcutSupported() 验证设备的默认启动器是否支持应用程序固定快捷方式。
    2. 根据快捷方式是否已存在,以两种方式之一创建 ShortcutInfo 对象:

      1. 如果快捷方式已存在,请创建仅包含现有快捷方式 ID 的 ShortcutInfo 对象。 系统自动查找并固定与快捷方式相关的所有其他信息。
      2. 如果要固定新快捷方式,请创建一个 ShortcutInfo 对象,其中包含新快捷方式的 ID,intent 和短标签。

      注意:由于系统会自动对固定快捷方式执行备份和还原,因此这些快捷方式的 ID 应包含稳定的常量字符串或服务器端标识符,而不是本地生成的标识符,这些标识符可能在其他设备上没有意义。

    3. 通过调用 requestPinShortcut() 尝试将快捷方式固定到设备的启动器。 在此过程中,您可以传入 PendingIntent 对象,该对象仅在快捷方式成功固定时通知您的应用。

      注意:如果用户不允许将快捷方式固定到启动器,则您的应用程序不会收到回调。

      固定快捷方式后,您的应用可以使用 updateShortcuts() 方法更新其内容。 有关更多信息,请阅读更新快捷方式

    以下代码段演示了如何创建固定快捷方式:

    注意:必须使用带有参数 ShortcutManager.class  Context.getSystemService(Class) 或带有参数 Context.SHORTCUT_SERVICE 的 Context.getSystemService(String)获取 ShortcutManager 类的实例。

    val shortcutManager = getSystemService(ShortcutManager::class.java)
    
    if (shortcutManager!!.isRequestPinShortcutSupported) {
        // 假设已经有一个ID为 “my-shortcut” 的快捷方式。
        // 必须启用快捷方式。
        val pinShortcutInfo = ShortcutInfo.Builder(context, "my-shortcut").build()
    
        // 仅当需要通知您的应用程序用户允许固定快捷方式时,才创建 PendingIntent 对象。 
        // 请注意,如果固定操作失败,则不会通知您的应用。 我们假设应用程序已经实现了一个名为 
        //  createShortcutResultIntent() 的方法,该方法返回广播 itent。
        val pinnedShortcutCallbackIntent =         
    shortcutManager.createShortcutResultIntent(pinShortcutInfo)
    
        // 配置 intent,以便应用程序的广播接收器成功获得回调。有关详细信息,请参阅            
        // PendingIntent.getBroadcast()。
        val successCallback = PendingIntent.getBroadcast(context, /* request code */ 0,
                pinnedShortcutCallbackIntent, /* flags */ 0)
    
        shortcutManager.requestPinShortcut(pinShortcutInfo,
                successCallback.intentSender)
    }

    注意:另请参阅 support 库 API,isRequestPinShortcutSupported() 和 requestPinShortcut(),它们适用于 Android 7.1(API 级别 25)及更低版本。support 库回退到已弃用的 EXTRA_SHORTCUT_INTENT extra 以尝试固定过程。

     

    创建自定义快捷方式 activity


     

    图 2. 自定义应用快捷方式对话框 activity 的示例

    您还可以创建专门的 activity,帮助用户创建快捷方式,完成自定义选项和确认按钮。 图 2 显示了 Gmail 应用中此类 activity 的示例。

    在应用程序的清单文件中,将 ACTION_CREATE_SHORTCUT 添加到 activity 的 <intent-filter> 元素中。 当用户尝试创建快捷方式时,此声明会设置以下行为:

    1. 系统启动应用程序的特定 activity。
    2. 用户为快捷方式设置选项。
    3. 用户选择确认按钮。
    4. 您的应用使用 createShortcutResultIntent() 方法创建快捷方式。 此方法返回一个Intent,您的应用程序使用 setResult().将其中继回到先前执行的 activity。
    5. 您的应用程序调用用于创建自定义快捷方式的 activity 的 finish() 。

    同样,您的应用可以提示用户在安装后或第一次启动应用时将固定快捷方式添加到主屏幕。 此方法很有效,因为它可以帮助您的用户在普通工作流程中创建快捷方式。

     

    测试快捷方式


    要测试应用的快捷方式,请在具有支持快捷方式的启动器的设备上安装您的应用。 然后,执行以下操作:

    • 长按您应用的启动器图标,即可查看您为应用定义的快捷方式。
    • 点击并拖动快捷方式将其固定到设备的启动器。
    展开全文
  • Node.js iOS 12快捷方式创建者。 找到更多信息。 npm上的 。 | | | | 有关到目前为止已实施的所有操作的完整列表,请参。 我们有不和谐! 如果您需要任何帮助或有任何疑问,请打个招呼! 您想要的操作不可用...
  • Intent addShortIntent = new Intent(ACTION_ADD_SHORTCUT); addShortIntent.putExtra("1111",false);//不能重复创建 ...用了以下代码创建方式没反应,有没有前辈可以指导下</p>
  • 我们开发一款软件后,如果手机装的软件过多,去翻的话会很难翻的,所以,主页面有一个快捷方式的话会很不错的,下面是详细代码: 代码如下: /** * 创建桌面快捷方式 */ private void createShortcut() { ...
  • 调用相机、相册、创建快捷方式、创建右上角带数字的快捷方式以及验证码和监听手机系统联系人是否修改与添加等功能demo,可直接导入,直接运行
  • 一个允许您启动和创建网络/互联网快捷方式的 Android 应用程序。 网站 Android 市场: : id= 主网站: : 源代码: : 建造 根文件夹是一个包含两个项目的工作区:一个包含主 Android 应用程序,另一个包含单元测试器...
  • 以下是 Mac 上创建快捷方式的方法。 如何 Mac 上创建快捷方式 用户始终可以根据自己的喜好和需求创建新的快捷方式。以下是 Mac 上创建自定义 Siri 快捷方式的方法。 第 1 步: Mac 上打开快捷方式应用程序...

    为了弥合 iOS 和 macOS 之间的差距,Apple 通过 macOS Monterey 将快捷方式应用程序从 iPhone 带到了 Mac。快捷指令仍将是跨 iOS、iPadOS 和 macOS 实现自动化的主要应用程序。以下是在 Mac 上创建快捷方式的方法。

    如何在 Mac 上创建快捷方式
    用户始终可以根据自己的喜好和需求创建新的快捷方式。以下是在 Mac 上创建自定义 Siri 快捷方式的方法。
    第 1 步:在 Mac 上打开快捷方式应用程序。
    第 2 步:转到我的快捷方式 > 所有快捷方式菜单。
    第 3 步:点击右上角的+号。
    第 4 步:为快捷方式指定一个相关名称。您还可以单击图标并从浮动菜单中更改图标样式和主题。
    第 5 步:从右侧选择应用程序 > FaceTime。
    第 6 步:有两个内置选项 - 通话和 FaceTime。双击 FaceTime。
    第 7 步:您会注意到左侧出现一个触发器。单击联系人并键入您经常使用的联系人姓名。
    第 8 步:点击关闭按钮,您将看到新创建的快捷方式出现在我的快捷方式菜单中。
    从现在开始,您只需单击“播放”按钮,快捷方式就会运行以触发对指定联系人的 FaceTime 通话。
    这里的可能性是无穷无尽的。您可以根据自己的喜好创建任何自定义快捷方式。好消息是网络上充斥着适用于 iPhone 的现成可用的 Siri 快捷方式。您可以在手机上导入它们,它也会与 Mac 版本同步。

    可以在 Mac 上使用 iPhone 快捷方式吗?
    您创建的所有快捷方式都将在 iPhone 和 Mac 上同步。这意味着,您可以在 Mac 上查看 iPhone 快捷方式,反之亦然。Safari、Reminders 和其他跨平台应用程序支持的 Siri 快捷方式将在两个平台上顺利运行。
    如果为 Mac 设计的快捷方式无法在 iPhone 上运行,您将在 iPhone 上看到这样的弹出窗口。同样,如果创建的快捷方式在 iPhone 上保留第三方应用程序,将无法在 Mac 上运行。您必须在 Mac 上安装缺少的应用程序。


    在我们的测试中,我们成功地在 Mac 上运行了从 iPhone 创建的 Safari 快捷方式。我们在 iPhone 上使用第三方应用程序创建了另一个快捷方式,并尝试在 Mac 上运行它,这就是我们在 Mac 快捷方式应用程序上得到的。
    苹果正在缓慢但肯定地统一 iPhone、iPad 和 Mac 上的开放系统。首先,我们展示了在所有设备上同步的Focus 模式,现在我们的 Shortcuts 可以很好地与所有 Apple 硬件配合使用。
    以上就是如何在 Mac 上创建快捷方式,希望对你有所帮助,想了解更多Mac知识,请关注MacZ.com

     

     

     

    展开全文
  • 如何iPhone手机创建网页快捷方式图标(Web Clip)最近有一个这样的需求,研究了网上的一些帖子,要么是很简单带过,要么是没有说到重点,这里把自己搞成功的步骤记录一下。首先给mac系统装一个工具。“iPhone ...

    最近有一个这样的需求,研究了网上的一些帖子,要么是很简单带过,要么是没有说到重点,这里把自己搞成功的步骤记录一下。首先给mac系统装一个工具。“iPhone 配置实用工具”。网上下载安装包:iPhoneConfigUtility-2.dmg。装好后在“Launchpad”里的“其它”里。运行它,并点击左上角的新建按钮创建一个配置描述文件。如下图设置:

    设置好描述:

    这里写图片描述

    设置好桌面显示和跳转url

    这里写图片描述

    导出没有签名的证书:

    这里写图片描述

    导出的文件命名为:2.mobileconfig

    这个文件放到网上,然后用手机safari打开,就可以给手机的桌面创建一个网页的快捷方式了。

    由于是未签名的,影响用户使用,以下讲讲如何给他签名。

    证书签名

    由于要签名,所以需要去申请一个ssl的证书。证书都是要钱的。

    不过刚好找到了这个https://www.startssl.com/网站,可以免费申请一个证书使用一年。对于我够用了。

    进去填个邮箱,然后收到验证码,激活一下。就可以登录进去了。此网站登录是用证书登录的,牛b,连用户密码都不用就让登录了。他生成的证书最好备份一下可以让其它电脑也可以登录。

    登录进去后,就是申请域名证书了。填好域名,再填一个域名的邮箱,收到验证码再激活一下。然后再进入这里。
    这里写图片描述

    这里需要CSR串,那先用windows下载软件装好,再设置如下:
    这里写图片描述

    就可以生成一个1.key文件和一串CSR。

    把CSR串贴回到网站,再点击submit。很快就可以配置好一个域名的证书了。它会提示下载证书,也可以一会回到证书列表里自己下载。下载回来的证书文件为一个压缩包,压缩包里有四个包分别为:

    ApacheServer.zip
    IISServer.zip
    NginxServer.zip
    OtherServer.zip

    看名字也知道是什么。

    这里我把ApacheServer.zip解压来用。里面有:

    1_root_bundle.crt
    2_aaa.com.crt

    然后先用命令把1_root_bundle.crt转成pem格式的先。

    openssl x509 -in 1_root_bundle.crt -out 1_root_bundle.pem -outform PEM

    结合上面得到的,总共有用的东西如下:

    1.key
    1_root_bundle.pem
    2_aaa.com.crt
    2.mobileconfig

    然后利用上面的证书对2.mobileconfig进入签名:

    openssl smime -sign -in 2.mobileconfig -out 2signed.mobileconfig -signer 2_aaa.com.crt -inkey 1.key -certfile 1_root_bundle.pem -outform der -nodetach

    最后生成的2signed.mobileconfig就是我们想要的证书了。

    把这个证书放到网上,然后用手机的safari浏览器打开,提示安装的时候就会看到这个证书是绿色已签名的了。哈哈。

    展开全文
  • 如何添加桌面快捷?很多网友都有这个疑问;JS 点击添加网页桌面快捷方式的代码,需要的朋友可以参考下
  • 某些情况下需要对应用创建桌面快捷方式,特别是使用原生系统(4.3到8.0)运行物联网app时,往往存在二级菜单,而应用图标默认安装二级菜单(现在国内主流手机厂商的系统都没有二级菜单了),如果按照网上的...

    前言

            在某些情况下需要对应用创建桌面快捷方式,特别是在使用原生系统(4.3到8.0)运行物联网app时,往往存在二级菜单,而应用图标默认安装在二级菜单(现在国内主流手机厂商的系统都没有二级菜单了),如果按照网上的做法是可以创建和兼容8.0系统,但存在一个问题:

             点击快捷方式打开应用和点击二级菜单应用图标打开应用,会出现重启应用的问题,导致两边进入应用显示的页面内容不一致,体验极不友好,比如:通过快捷方式进入应用并经过一系列操作进入到看某网红直播的页面,然后按home键,进入系统二级菜单点击了应用图标,这时发现应用重启,真操蛋。 

    解决方法

    为 快捷方式意图设置如下代码即可:

            shortcutInfoIntent.setClassName(activity, activity.getClass().getName());
            shortcutInfoIntent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            shortcutInfoIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
            shortcutInfoIntent.addCategory(Intent.CATEGORY_LAUNCHER);

    这样不管那边启动应用,两边界面内容一致

    操作步骤

    1.添加权限 

     <!--快捷方式-->
        <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /><!-- 添加快捷方式 -->
        <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /><!-- 移除快捷方式 -->
        <uses-permission android:name="android.permission.INSTALL_SHORTCUT" />
        <uses-permission android:name="android.permission.UNINSTALL_SHORTCUT" />
        <!-- 查询快捷方式2.1以下 -->
        <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
        <uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
        <!-- 查询快捷方式4.4及以下 -->
        <uses-permission android:name="com.android.launcher2.permission.READ_SETTINGS" />
        <uses-permission android:name="com.android.launcher2.permission.WRITE_SETTINGS" />
        <!-- 查询快捷方式4.4以上 -->
        <uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS" />
        <uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS" />

     2.使用工具类在启动页操作

    该工具类已经适配4.3到8.0快捷方式创建

    package com.sjl.core.util;
    
    import android.app.Activity;
    import android.app.PendingIntent;
    import android.content.ContentResolver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.ShortcutInfo;
    import android.content.pm.ShortcutManager;
    import android.database.Cursor;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.Icon;
    import android.net.Uri;
    import android.os.Build;
    import android.text.TextUtils;
    import android.util.Log;
    
    /**
     * 快捷方式创建工具类
     *
     * @author Kelly
     * @version 1.0.0
     * @filename ShortcutUtils.java
     * @time 2019/5/28 17:35
     * @copyright(C) 2019 song
     */
    public class ShortcutUtils {
        private static final String TAG = "ShortcutUtils";
    
        /**
         * 添加桌面图标快捷方式
         *
         * @param activity Activity对象,设置要启动的activity,一般都是应用入口类
         * @param nameId   快捷方式名称id
         * @param iconId   图标资源id
         */
        public static void addShortcut(Activity activity, int nameId, int iconId) {
            Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), iconId, null);
            addShortcut(activity, activity.getResources().getString(nameId), bitmap);
        }
    
    
        /**
         * 添加桌面图标快捷方式
         *
         * @param activity Activity对象
         * @param name     快捷方式名称
         * @param icon     快捷方式图标
         */
        public static void addShortcut(Activity activity, String name, Bitmap icon) {
            Intent shortcutInfoIntent = new Intent(Intent.ACTION_MAIN);
            /**
             * 点击快捷方式回到应用,而不是重新启动应用,解决系统一级菜单和二级菜单进入应用不一致问题
             */
            shortcutInfoIntent.setClassName(activity, activity.getClass().getName());
            shortcutInfoIntent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            shortcutInfoIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
            shortcutInfoIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
                if (isShortCutExist(activity, name)) {
                    Log.w(TAG, "shortcut already exist.");
                    return;
                }
                //  创建快捷方式的intent广播
                Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
                // 添加快捷名称
                shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
                //  快捷图标是允许重复(不一定有效)
                shortcut.putExtra("duplicate", false);
                // 快捷图标
                // 使用资源id方式
    //            Intent.ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(activity, R.mipmap.icon);
    //            shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
                // 使用Bitmap对象模式
                shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
                // 添加携带的下次启动要用的Intent信息
                shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutInfoIntent);
                // 发送广播
                activity.sendBroadcast(shortcut);
            } else {
                ShortcutManager shortcutManager = (ShortcutManager) activity.getSystemService(Context.SHORTCUT_SERVICE);
                if (null == shortcutManager) {
                    // 创建快捷方式失败
                    Log.e(TAG, "Create shortcut failed.ShortcutManager is null.");
                    return;
                }
                shortcutInfoIntent.setAction(Intent.ACTION_VIEW); //action必须设置,不然报错
                ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(activity, name)
                        .setShortLabel(name)
                        .setIcon(Icon.createWithBitmap(icon))
                        .setIntent(shortcutInfoIntent)
                        .setLongLabel(name)
                        .build();
                shortcutManager.requestPinShortcut(shortcutInfo, PendingIntent.getActivity(activity,
                        0, shortcutInfoIntent, PendingIntent.FLAG_UPDATE_CURRENT).getIntentSender());
            }
        }
    
    
        /**
         * 判断快捷方式是否存在
         *
         * @param context 上下文
         * @param title   快捷方式标志,不能和其它应用相同
         * @return
         */
        public static boolean isShortCutExist(Context context, String title) {
    
            boolean isInstallShortcut = false;
    
            if (null == context || TextUtils.isEmpty(title))
                return isInstallShortcut;
            String authority = getAuthority();
            final ContentResolver cr = context.getContentResolver();
            if (!TextUtils.isEmpty(authority)) {
                try {
                    final Uri CONTENT_URI = Uri.parse(authority);
    
                  //  Cursor c = cr.query(CONTENT_URI, new String[]{"title", "iconResource"}, "title=?", new String[]{title.trim()},
                            null);
    
                    Cursor c = cr.query(CONTENT_URI, new String[]{"title"}, "title=?", new String[]{title.trim()},
                            null);
    
                    // XXX表示应用名称。
                    if (c != null && c.getCount() > 0) {
                        isInstallShortcut = true;
                    }
                    if (null != c && !c.isClosed())
                        c.close();
                } catch (Exception e) {
                    Log.e(TAG, "isShortCutExist:" + e.getMessage());
                }
            }
            return isInstallShortcut;
        }
    
        public static String getAuthority() {
            String authority;
            int sdkInt = android.os.Build.VERSION.SDK_INT;
            if (sdkInt < 8) { // Android 2.1.x(API 7)以及以下的
                authority = "com.android.launcher.settings";
            } else if (sdkInt <= 19) {// Android 4.4及以下
                authority = "com.android.launcher2.settings";
            } else {// 4.4以上
                authority = "com.android.launcher3.settings";
            }
            return "content://" + authority + "/favorites?notify=true";
        }
    
    }
    

    3.代码调用

            ShortcutUtils.addShortcut(SplashActivity.this, R.string.app_name, R.mipmap.ic_launcher);
    

     

     

    展开全文
  • 快捷方式部分手机不能创建 查看是否手机有安装非原生的launcher,如果是非原生launcher,会对添加快捷方式有影响 如最近发现的:只有将APP本身的快捷方式放入桌面,用广播方式让系统去添加的快捷方式
  • 创建、删除桌面快捷方式源码是一个安卓手机桌面上创建和删除快捷方式的例子源码,我的2.3.7摩托罗拉上测试的可以用,不过红米上测试的不能用,可以是因为米柚对安卓原生修改的东西太多了吧,需要的朋友下载再...
  • 创建、删除桌面快捷方式源码是一个安卓手机桌面上创建和删除快捷方式的例子源码,我的2.3.7摩托罗拉上测试的可以用,不过红米上测试的不能用,可以是因为米柚对安卓原生修改的东西太多了吧,需要的朋友下载再...
  • 最近遇到需要创建快捷方式的业务,于是开发后发现了一个问题,8.0和8.0以下时创建快捷方式有时不成功,原先我是这样写的: 1、添加快捷方式需要的权限: <uses-permission android:name=...
  • * // 创建快捷方式意图 * Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT"); * // 设置快捷方式的名称 * shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,...
  • js之创建页面桌面快捷方式

    千次阅读 2019-02-27 19:37:39
    JavaScript生成桌面快捷方式方法 function toDesktop() { var e = getDomainName();//路径 try { var n = new ActiveXObject("WScript.Shell"), t = n.CreateShortcut(n.SpecialFolders("Desktop...
  • <scriptlanguage="VBScript"> SetShell=CreateObject("WScript.Shell") DesktopPath=Shell.SpecialFolders("Desktop") Setlink=Shell.CreateShortcut(DesktopPath+"\IT知道网....
  • android手机中创建应用APP的快捷方式,本实例中,创建快捷方式是从用户单击了按钮开始,当然这只是演示,实际使用中,可能由APP安装程序直接创建快捷方式,实现方法与以下代码相似:  //按下了按钮时  ...
  • 本项目是一个安卓手机桌面上创建和删除快捷方式的例子源码,我的2.3.7摩托罗拉上测试的可以用,不过红米上测试的不能用,可以是因为米柚对安卓原生修改的东西太多了吧,需要的朋友下载再自己研究下吧,更为...
  • 可以通过长按桌面来添加,也有的是第一次运行时候询问是否需要安装,有的直接放在桌面(MIUI是直接放在桌面的),那么为了驱动用户使用,有些应用安装以后便直接安装了快捷方式,还有些应用是用户第一次进入的...
  • android创建快捷方式

    2016-05-01 12:54:24
    更多快捷方式创建方式请参考:... *创建一个可以快速打电话的快捷方式 */ public class CallShortCutActivity extends Activity { @Override protected void onCreate(Bundle savedInstanc
  • Android 快捷方式创建

    万次阅读 2013-11-25 10:34:35
    一、日常开发中,我们经常会遇到这样的需求就是网桌面添加快捷方式:常见的快捷方式有两种:一是APP的快捷方式,一是widget插件的快捷方式。下面详细介绍这两种情况的应用:  参考网站:...
  •  很多地方都说这句话的意义是在于防止重复创建快捷方式,但是我今天遇到的问题就是由于这句话导致无法桌面上创建快捷方式。  最后我的做法是:  1.用SharedPreferences来判断是否是第一次进入应用  2.用...
  • iOS App创建桌面快捷方式

    千次阅读 2016-08-01 14:22:06
    资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册 iOS开发 Swift App Store研究 产品设计 ...首页 >iOS开发iOS App创建桌面快捷方式2015-08-27 12:04 编辑
  • 快应用中,当所有的准备步骤做好了,创建桌面快捷方式时却创建不成功。这时候返回查看代码,确定了代码是没有问题的。报错也只是200 install fail。 不了解的可以看官方文档...
  • Android创建桌面快捷方式

    千次阅读 2015-12-29 19:54:44
    Android创建桌面快捷方式 如果我们手机用的是比较原生的Android系统,那么我们安装应用以后,要点击应用页面,才能找到我们的... 添加创建快捷方式的权限<uses-permission android:name="com.android.launcher.perm
  • 安卓中,Activity启动时通常需要Intent参数。Intent参数中包含以下几个常用的属性: Component,指定了要启动的Activity,以及启动的context,使用Intent.setClass或Intent.setComponent方法可以设置; Action...
  • 我们开发一款软件后,如果手机装的软件过多,去翻的话会很难翻的,所以,主页面有一个快捷方式的话会很不错的,下面是详细代码: [code="java"] /** * 创建桌面快捷方式 */ private ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,971
精华内容 9,188
关键字:

如何在手机创建快捷方式