zoukankan      html  css  js  c++  java
  • android创建桌面快捷键shortcut

    有非常多人也写过创建桌面快捷键的blog。可是大部分都仅仅讲了怎么用,事实上技术使用起来都非常easy。可是你使用后下次还知道吗?


    根本原因还是不清楚原理。今天我就来讲讲shortcut创建过程。


    过程:

    home键--》点击加入--》弹出一个Dialog对话框--》Dialog对话框中的数据。是一个系统级专门用来查找的Activity启动
    ---》查找出数据显示能加入的快捷方式---》然后保存数据。退出dialog——》桌面launcher操作——》完毕


    原理:

    查看源代码。事实上是launcher 中调用pickShortcut()方法,启动PickActivity检查须要的数据,在PickActivity中会检查

    manifest.xml中对activity有没有加IntenttFilter,假设查到有,就会通过switch-case选择对于的Item返回消息给laucher,

    laucher中在onResultActivity()做接受返回的数据,再次启动一个带返回值得Activity到ShortcutActivity,等待ShortcutActivity

    处理完毕,返回信息,调用completeAddliveFolder(). 

     事实上我们要做的主要是下图步骤2和步骤5;步骤2 在manifest.xml给Activity加入IntentFileter,步骤5,给快捷方式加入一个

    图标和名称。




    代码:

     <activity android:name="ShortCutTest">                
            <intent-filter>                    
                <action android:name="android.intent.action.CREATE_SHORTCUT"/>                
            </intent-filter>            
        </activity>   

    public class ShortCutTest extends Activity{         
        @Override        
        protected void onCreate(Bundle savedInstanceState) {             
        // TODO Auto-generated method stub             
        super.onCreate(savedInstanceState);         
            createShortCut();  
        }     
             
        public void createShortCut(){             
            Intent addShortCut;     
            //推断是否须要加入快捷方式             
            if(getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)){                 
                addShortCut = new Intent();                 
                //快捷方式的名称                 
                addShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME , "我的快捷方式");                 
                //显示的图片                
                Parcelable icon = ShortcutIconResource.fromContext(this, R.drawable.icon);                 
                addShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);     
                //快捷方式激活的activity,须要运行的intent,自定义                 
                addShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent());                 
                //OK,生成                 
                setResult(RESULT_OK, addShortCut);     
            }else{                 
                 //取消                 
                setResult(RESULT_CANCELED);     
            }     
        }     
    }   


    理解了原理,是不是再也不会忘记怎么加入快捷方式了


  • 相关阅读:
    Struts2 MVC基础介绍
    【转载】Linux下安装、配置、启动Apache
    网易校招编程题
    libevent中evmap实现(哈希表)
    libevent源码阅读笔记(一):libevent对epoll的封装
    Linux进程间通信总结
    【转载】Ubuntu 12.04 LTS 中文输入法的安装
    转载 正则表达式30分钟入门教程
    简明Vim练级攻略
    【转载】C++基本功和 Design Pattern系列 ctor & dtor
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6970908.html
Copyright © 2011-2022 走看看