• Android中为APP创建快捷方式的原理(自己的理解)


    我们首先来看Android中为APP创建快捷方式的原理:

    从图上可以看出,Android大致分7步完成快捷方式的创建:

    第一步:Android系统的launcher程序会调用它的pickShortcut()方法去启动系统的pickActivity程序(应用);

    第二步:pickActivity程序(应用)启动后会调用它的CheckIntentFilter()方法,去在系统中寻找可以创建快捷方式的应用有哪些,并且列举出来。只要第三方                     App用<Intent-filter>标签进行了相应的注册(具体如何注册请看下面的代码)就可以被发现并列举出来;

    第三步:调用Choseitem()方法选择创建谁的快捷方式;

    第四步:完成第三步之后,pickActivity程序(应用)会将选择的消息通过Intent返回给系统的launcher;

    第五步:launcher程序获得pickActivity返回的消息后,就会知道创建谁的快捷方式,通过调用ProcessShortcut()方法去启动第三方App中负责创建快捷方式                     的Activity,这个Activity就是第二步中我们提到的用<Intent-filter>标签进行了注册的Activity;

    第六步:第三方App中负责创建快捷方式的Activity会将快捷方式的名称,图标和点击后跳转路径通过Intent返回给launcher;

    第七部:launcher收到返回的消息后调用本身的ComPleteAddShortcut()方法完成快捷方式的创建,并显示在桌面上;

    分析完原理后,那么作为第三方开发者应该完成哪几步呢?

    我们只需完成如下2步就ok了,其他的事情系统会为我们去做:

    首先:用<Intent-filter>标签进行注册

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

    其中的“CreatShortCut”是负责创建快捷方式的Activity的名字。

    然后:向Launcher返回相关数据

    public class CreatShortCut extends Activity {
    
        /**
         * Description
         * 
         * @param savedInstanceState
         * @see android.app.Activity#onCreate(android.os.Bundle)
         */
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
    
            if (getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)) {
    
                Intent _returnIntent = new Intent();
                _returnIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "csx");// 快捷键的名字
                _returnIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,// 快捷键的ico
                        Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher));
                _returnIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,
                        MainActivity.class));// 快捷键的跳转Intent
    
                setResult(RESULT_OK, _returnIntent);// 发送
                finish();// 关闭本Activity
    
            }
    
        }
    }

    大功告成!!!(网上也有一些其他方法但是都很复杂,不好使用)

  • 相关阅读:
    DGA聚类 使用DBScan
    http://bdsmdvdtube.com/ 罪恶无处不在
    leetcode 202. Happy Number
    广州Uber优步司机奖励政策(1月4日~1月10日)
    武汉ber优步司机奖励政策(1月4日~1月10日)
    厦门Uber优步司机奖励政策(1月4日~1月10日)
    上海Uber优步司机奖励政策(1月4日~1月10日)
    青岛Uber优步司机奖励政策(1月4日~1月10日)
    深圳Uber优步司机奖励政策(1月4日~1月10日)
    成都Uber优步司机奖励政策(1月10日)
  • 原文地址:https://www.cnblogs.com/csxcode/p/4034580.html
Copyright © 2020-2023  润新知