精华内容
下载资源
问答
  • 安卓8.0以前,如果需要给安卓APP创建快捷方式,需要使用到广播机制。 而在最新的安卓8.0中,旧的广播创建快捷方式方式是已经过时甚至失效了的。 而新的快捷方式使用了一个新的类:ShortcutManager,谷歌在抛弃旧...

    在安卓8.0以前,如果需要给安卓APP创建快捷方式,需要使用到广播机制。

    而在最新的安卓8.0中,旧的广播创建快捷方式方式是已经过时甚至失效了的。

    而新的快捷方式使用了一个新的类:ShortcutManager,谷歌在抛弃旧机制的同时,在ShortcutManager上加了个兼容:ShortcutManagerCompat,使用它就能分分钟搞定原本繁琐的快捷方式创建了~

    那么不多废话,直接上工具类(复制粘贴即可使用~):

    首先添加权限:

    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

     之后调用方法即可:

    public class ShortcutUtils {
        //使用当前APP的启动图标创建快捷方式
        public static void installShortCut(Context context, String shortcutID, String name, Intent intent) {
            if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) {
                intent.setAction(Intent.ACTION_MAIN);
                //新的创建机制,判断唯一性的方法更改为ShortcutID了,默认不允许重复创建ID相同的快捷方式
                ShortcutInfoCompat pinShortcutInfo =
                        new ShortcutInfoCompat.Builder(context, shortcutID).setShortLabel(name).setIntent(intent).build();
                Intent pinnedShortcutCallbackIntent =
                        ShortcutManagerCompat.createShortcutResultIntent(context, pinShortcutInfo);
    
                PendingIntent successCallback = PendingIntent.getBroadcast(context, 0,
                        pinnedShortcutCallbackIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    
                ShortcutManagerCompat.requestPinShortcut(context, pinShortcutInfo,
                        successCallback.getIntentSender());
            }
        }
    
        public static IconCompat generateIcon(Bitmap bitmap) {
            return IconCompat.createWithBitmap(bitmap);
        }
    
        //使用自定义图标创建快捷方式
        public static void installShortCut(Context context, String shortcutID, String name, IconCompat iconCompat, Intent intent) {
            if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) {
                intent.setAction(Intent.ACTION_VIEW);
                ShortcutInfoCompat pinShortcutInfo =
                        new ShortcutInfoCompat.Builder(context, shortcutID).setShortLabel(name).setIntent(intent).setIcon(iconCompat).build();
    
                PendingIntent successCallback = PendingIntent.getBroadcast(context, 0,
                        intent, PendingIntent.FLAG_UPDATE_CURRENT);
    
                ShortcutManagerCompat.requestPinShortcut(context, pinShortcutInfo,
                        successCallback.getIntentSender());
            }
        }
    }
    

    最后,如果您觉得这个工具类为您省下了大量时间的话,不妨给博主发个红包吧,一分也是爱呀~

    展开全文
  • Intent addIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");String title = getResources().getString(R.string.title_activity_result);Parcelable icon = Intent.ShortcutIconResourc...
    Intent addIntent  = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    String title = getResources().getString(R.string.title_activity_result);
    Parcelable icon = Intent.ShortcutIconResource.fromContext(MainActivity.this, R.drawable.qiang_ac);
    Intent intent = new Intent(MainActivity.this,MainActivity.class);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,title);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,icon);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT
    , intent);
    sendBroadcast(addIntent);

     

    转载于:https://www.cnblogs.com/ouyangping/p/8300825.html

    展开全文
  • 一、 Launcher 应用简介、 二、 Launcher 应用源码简介、 三、 Launcher 图标点击方法分析





    一、 Launcher 应用简介



    Launcher 应用 : Android 中每个应用都是一个可执行程序 , Android 的主界面也是一个应用 , 称为 Launcher 应用 , 现在分析主界面的相关逻辑 , 进而找到应用启动的入口位置 ;

    在这里插入图片描述

    2 . 查找 Launcher 应用 : 查找 使用 adb shell dumpsys activity activities 命令 , 可以查看当前的 Activity 名称 ;

    $ adb shell dumpsys activity activities
    

    3 . 查看 Launcher 应用 Activity 界面 : 由输出的信息可知 , 当前运行的 Activity 叫做 NexusLauncherActivity , 该 Activity 所在的应用就是 Launcher 应用 , 用户点击该应用中的图标 , 即可跳转到系统中安装的不同应用中 ;

        Running activities (most recent first):
          TaskRecord{64eb48e #297 I=com.google.android.apps.nexuslauncher/.NexusLauncherActivity U=0 StackId=0 sz=1}
            Run #0: ActivityRecord{849baf3 u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t297}
    
       mResumedActivity: ActivityRecord{849baf3 u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t297}
       mLastPausedActivity: ActivityRecord{849baf3 u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t297}
    
     ResumedActivity:ActivityRecord{849baf3 u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t297}
    
      ResumedActivity: ActivityRecord{849baf3 u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t297}
    




    二、 Launcher 应用源码简介



    1 . Launcher 应用源码位置及版本 :


    ① Launcher 版本 : Launcher 有 33 个版本 , 分别是 Launcher , Launcher2 , Launcher3 ;

    ② 源码位置 : 其位置再 Android 源码路径下的 \packages\apps 目录下 ;

    • Launcher 版本的路径 : \packages\apps\Launcher
    • Launcher2 版本的路径 : \packages\apps\Launcher2
    • Launcher3 版本的路径 : \packages\apps\Launcher3

    ③ Launcher 版本与安卓版本对应关系 : 2.1 之前使用 Launcher , 2.2 ~ 4.3 使用 Launcher2 , 4.4 以后使用 Launcher3 应用 ;



    2 . Launcher2 源码分析 :


    ① Launcher2 应用 Activity 界面源码位置 : \packages\apps\Launcher2\src\com\android\launcher2\Launcher.java

    ② Launcher.java 界面 : 这里分析 Launcher2 的 Launcher.java 类 , 该类就是 Android 开机后 , 看到的界面 , 在该界面中维护了所有应用的图标 , 点击图标可以进入这些 Android 应用 ;

    public final class Launcher extends Activity
            implements View.OnClickListener, OnLongClickListener, LauncherModel.Callbacks,
                       View.OnTouchListener {
    }
    




    三、 Launcher 图标点击方法分析



    1 . Launcher 应用快捷方式图标 : 这是在主界面中点击图标 , 启动安卓应用的核心方法 , 下面分析该方法的源码 ; 下图是 Launcher 界面展示 , 界面中的快捷方式图标就对应着不同的应用 ;

    在这里插入图片描述


    2 . 点击图标调用方法 : 点击任意一个图标 , 都会调用如下 onClick 方法 , 传入点击的图标组件作为参数 ;


    3 . 判定点击的组件是否是快捷方式图标 : 检查该快捷方式组件中的 tag 标签是否属于 ShortcutInfo 快捷方式信息 , 用于甄别用户点击的是否是快捷方式图标 ; 这是 Launcher 应用启动安卓应用的核心分支 ;

            if (tag instanceof ShortcutInfo) {
            }
    

    4 . 判断是否是多个图标文件夹 : 如果是多个应用图标的组合 , 即多个图标在一个格子中 , 走这个分支 ; 如下图中右侧的图标文件夹 , 44 个图标放在一个目录中 ;

            } else if (tag instanceof FolderInfo) {
    

    在这里插入图片描述


    5 . 启动应用的核心代码 : if (tag instanceof ShortcutInfo) 分支中 , 如果点击应用图标 , 会调用 startActivitySafely 方法 , 启动应用 ;

    boolean success = startActivitySafely(v, intent, tag);
    

    6 . 完整的快捷方式图标点击方法示例 :

        /**
         * 根据点击的快捷方式图标启动对应的应用
         *
         * @param v 快捷方式图标对应的组件
         */
        public void onClick(View v) {
            // Make sure that rogue clicks don't get through while allapps is launching, or after the
            // view has detached (it's possible for this to happen if the view is removed mid touch).
            if (v.getWindowToken() == null) {
                return;
            }
    
            if (!mWorkspace.isFinishedSwitchingState()) {
                return;
            }
    
            Object tag = v.getTag();
            // 检查该快捷方式组件中的 tag 标签是否属于 ShortcutInfo 快捷方式信息
            // 用于甄别用户点击的是否是快捷方式图标 
            if (tag instanceof ShortcutInfo) {
                // Open shortcut
                final Intent intent = ((ShortcutInfo) tag).intent;
                int[] pos = new int[2];
                v.getLocationOnScreen(pos);
                intent.setSourceBounds(new Rect(pos[0], pos[1],
                        pos[0] + v.getWidth(), pos[1] + v.getHeight()));
    
    			// 启动快捷方式图标对应的安卓应用
                boolean success = startActivitySafely(v, intent, tag);
    
                if (success && v instanceof BubbleTextView) {
                    mWaitingForResume = (BubbleTextView) v;
                    mWaitingForResume.setStayPressed(true);
                }
            } else if (tag instanceof FolderInfo) {
             	// 如果是多个应用图标的组合 , 即多个图标在一个格子中 , 走这个分支
                if (v instanceof FolderIcon) {
                    FolderIcon fi = (FolderIcon) v;
                    handleFolderClick(fi);
                }
            } else if (v == mAllAppsButton) {
                if (isAllAppsVisible()) {
                    showWorkspace(true);
                } else {
                    onClickAllAppsButton(v);
                }
            }
        }
    
    展开全文
  •    last modify:2013-11-14 17:30:03  ×××××××××××××... 首先,如果一个应用要在android桌面创建一个快捷方式,那么必须拥有以下权限: &lt;uses-permission android:name="com.and...

     

        last modify:2013-11-14 17:30:03

     ×××××××××××××××××××××××××××

     

     在一些软件启动时常常会创建一个快捷启动方式在桌面,那么是怎么实现的呢?

     

     首先,如果一个应用要在android桌面创建一个快捷方式,那么必须拥有以下权限:

    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>

     

     下面是具体的实现代码:

     

    private void createShortcut() {
    		Intent intent = new Intent();
    		intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    		//步骤1:设置快捷方式的名称,注意系统在判断桌面的快捷方式是否重复时,是通过快捷方式的名称判断的,与图片无关。
    		intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "捍 卫");
    		//步骤2:设置快捷方式的图片资源. 有两种方式:
    		//第一种:EXTRA_SHORTCUT_ICON_RESOURCE:设置快捷方式的图片icon资源,要求格式为ShortcutIconResource类型。
    		//intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, ShortcutIconResource.fromContext(this, R.drawable.android));
    		//第二种:EXTRA_SHORTCUT_ICON:也是设置快捷方式的图片icon资源,但是要求的格式是一个bitmap类型,
    		//并且优先于上面的EXTRA_SHORTCUT_ICON_RESOURCE.如果两者都定义以EXTRA_SHORTCUT_ICON为主。
    		//定义一个bitmap: BitmapFactory.decodeResource(getResources(), R.drawable.atools)  
    		intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
    		//防止重复创建快捷图标
    		intent.putExtra("duplicate", false);
    		//设置快捷方式的意图
    		Intent shortcutIntent = new Intent(); //必须使用隐式意图或者包名类名形式启动,否则无法从快捷方式启动应用。
    		//第一种初始化方式:通过包名和类名形式
    		//shortcutIntent.setClassName(getPackageName(), "com.***.activity.HomeActivity");
    		//第二种初始化方式:通过意图过滤器
    		shortcutIntent.setAction("com.***.intent.action.HOME");
    		shortcutIntent.addCategory(Intent.CATEGORY_DEFAULT);
    		
    		intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    		//发送广播给系统,系统接受到这个广播就会按照设定的name和图标icon创建桌面快捷方式
    		sendBroadcast(intent);
    	}

     

     

    展开全文
  • 安卓代码中,创建应用快捷方式
  • 有的时候需要安卓应用显示多个入口,即快捷方式。网上确实有几种添加快捷方式的方法,但是因为时间有限,直接模拟入口activity设置下参数应当是最快的方式了。 以下是程序自动生成的入口activity参数 android:...
  • 在开发过程中,遇到一个需求是要在桌面创建应用程序的快捷的方式,当时从网上一查资料,发现还挺简单的,可是做完之后发现在判断桌面是否已经创建快捷方式这一块出了问题。   一开始按照网上的方法我是这样判断...
  • 目录概述静态快捷方式动态快捷方式固定快捷方式 概述 想必用过IPhone手机的人肯定会对3D Touch功能赞不绝口。苹果公司在2015年的IPhone 6s上首次搭载了3D Touch功能。使用者不需要打开应用,只要在应用图标上用力...
  • Delphi实现安卓下的沉浸,可自由设置、包括状态栏与导航栏的透明与颜色。资源包括了所有源码,可立即应用到项目中,方便快捷。仅需几行代码,就可安卓5及以上版本。
  • 安卓应用桌面小图标

    2013-08-14 22:30:08
    便捷始终是apps的追求之一,与PC终端一样,智能机安卓终端的桌面也是很重要的,为你的程序apps设置一个桌面快捷方式可以为你的apps增色不少。 首先我们有必要了解一下安卓手机系统的桌面,桌面包含壁纸和快捷方式...
  • 快捷方式这么一说,可以通过长按桌面来添加,也有的是第一次运行时候询问是否需要安装,有的直接放在桌面(MIUI是直接放在桌面的),那么为了驱动用户使用,有些应用在安装以后便直接安装了快捷方式,还有些应用是...
  • 本项目是一个在安卓手机桌面上创建和删除快捷方式的例子源码,在我的2.3.7摩托罗拉上测试的可以用,不过在红米上测试的不能用,可以是因为米柚对安卓原生修改的东西太多了吧,需要的朋友下载再自己研究下吧,更为...
  • 3D Touch是一种立体触控技术,被苹果称为新一代多点触控技术,是在Apple Watch上采用的Force Touch,屏幕可感应不同的...随着IOS在iphone 6s 上加入了3d touch后,果粉手机很多应用都有了快捷访问的功能。比如下图:...
  •  对,你没有听错,使...接下来进行傻瓜式安装即可,安装过后,在桌面会出现其快捷方式,右键点击允许运行即可~,安装完毕后应用截图如下。  登录微信,或者打游戏完全畅通无阻~  有帮助的话就点个赞呗~ ...
  • Android中程序的快捷方式操作很有必要,自己按照网上参考了很久,发现删除快捷方式很多时候存在问题: 主要是由于第三方的桌面等因素影响,这个是硬伤啊,还要研究研究。 这里推荐大家参考的代码,在Android4.2.1...
  • 悟空分身,多开免费版分身版工具、虚拟化启动手机多开、安全不封号、快捷方式等功能于一身,一部手机多个分身同时在线。一键流畅双开助手分身多开,免费实现多开分身版大师。优势 【wx多开】不止是一个分身,满足您...
  • 底部快捷设置app是一款专门为安卓手机设置底部快捷功能的软件,使用方法非常...底部快捷设置允许您从屏幕底部向上拖动快速设置面板并切换WiFi,蓝牙,Flash等设置,包括在面板中添加应用程序和网站的快捷方式!类...
  • Apex 和Nova 是目前安卓平台上桌面应用里面的两个标杆。如果你对系统自带的桌面(启动器)不满意,那么Apex 和Nova不会让你失望。相对于Nova,Apex 的设置非常丰富,这也给刚刚接触的新手带来好多不便。这里,我把应用...
  • 公司开发了一款安卓APP,但是许多客户会根据自己的需要,想把应用程序桌面快捷方式的图片,名称,以及进入应用后显示的壁纸、LOGO等改为自己公司的。 基于上述需求,希望可以不用通过修改后重新编译给APK的方式,在...
  • 开发了一个安卓应用,三个Activity,为了方便,三个Activity对应设置了三个从桌面启动的快捷方式,从快捷方式启动Activity的话,一片白,无响应,而从主程序中打开此Activity则可以正常启动,什么原因呢呢
  • iOS App创建桌面快捷方式

    千次阅读 2016-08-01 14:22:06
    资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册 iOS开发 Swift App Store研究 ...应用 ...安卓相关 ...首页 >iOS开发iOS App创建桌面快捷方式2015-08-27 12:04 编辑
  • 欢迎关注小刘的资源屋苹果IOS14功能有一个双击屏幕背部截屏,但是实际在安卓Android 11开发者预览版也发现了 ...能实现能---------双击手机背部后:启动类:启动应用、启动快捷方式、启动语音助手、启动相机工具类:...

空空如也

空空如也

1 2 3 4 5 6
收藏数 104
精华内容 41
关键字:

安卓应用快捷方式