Android为你的应用程序添加快捷方式

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Android为你的应用程序添加快捷方式【优..2010-11-0422:33:55有人会说,快捷方式,不是安装完应用程序后,长按应用程序的ICON然后将它拖到桌面上不就行了吗?没错,这样是一种方法,但这种方法有一个缺点,看图吧:如上图,如果我们长按桌面点击快捷方式,将会跳到如下界面,如果单从这个界面选择的话,我们就必须进入Applications目录,然后再在Applications里面选择我们对应的应用程序,这样的话用户可能得麻烦的去找咯。但我们同时会发现,在Applications的下面有很多另外的ICON比如上图的BookMark,Contact等,这些也是应用,那么这些是怎么做到不用进去Applications而在第一页就出现供用户选择呢?今天我们就针对这点来讲讲吧。要做这一功能首先我们先来了解一下manifest里面的这一标签:activity-aliassyntax:语法:activity-aliasandroid:enabled=[true|false]android:exported=[true|false]android:icon=drawableresourceandroid:label=stringresourceandroid:name=stringandroid:permission=stringandroid:targetActivity=string.../activity-aliascontainedin:隶属于:applicationcancontain:可以包含:intent-filtermeta-datadescription:说明:Analiasforanactivity,namedbythetargetActivityattribute.Thetargetmustbeinthesameapplicationasthealiasanditmustbedeclaredbeforethealiasinthemanifest.activity的一个别名,用targetActivity属性命名。目标activity必须与别名在同一应用程序的manifest里,并且在别名之前声明。Thealiaspresentsthetargetactivityasaindependententity.Itcanhaveitsownsetofintentfilters,andthey,ratherthantheintentfiltersonthetargetactivityitself,determinewhichintentscanactivatethetargetthroughthealiasandhowthesystemtreatsthealias.Forexample,theintentfiltersonthealiasmayspecifytheandroid.intent.action.MAINandandroid.intent.category.LAUNCHERflags,causingittoberepresentedintheapplicationlauncher,eventhoughnoneofthefiltersonthetargetactivityitselfsettheseflags.别名作为一个独立的实体代表目标activity。它可以有它自己的一套intentfilter,它们,而不是目标activity自己的intentfilter,决定哪个intent能够活性化目标通过别名以及系统如何处理别名。例如,别名的intentfilter可以指定android.intent.action.MAIN和android.intent.category.LAUNCHER标签,使之显示在应用程序启动器上,即使目标activity自己没有设置这些标签。WiththeexceptionoftargetActivity,activity-aliasattributesareasubsetofactivityattributes.Forattributesinthesubset,noneofthevaluessetforthetargetcarryovertothealias.However,forattributesnotinthesubset,thevaluessetforthetargetactivityalsoapplytothealias.targetActivity的例外,activity-alias属性是activity属性的一个子集。对于该子集中的属性,目标activity中设置的值不会覆盖别名的值。然而,对于那些子集中没有设置的属性,设置给目标activity的值同样适用于别名。上面给出的解释我们来配置一下manifest,配置为如下:CodehighlightingproducedbyActiproCodeHighlighter(freeware):name=.shortcutintent-filteractionandroid:name=android.intent.action.MAIN//intent-filter/activityactivity-aliasandroid:name=.CreateShortcutsandroid:targetActivity=.shortcutandroid:label=@string/shortcutintent-filteractionandroid:name=android.intent.action.CREATE_SHORTCUT/categoryandroid:name=android.intent.category.DEFAULT//intent-filter/activity-aliasActivity:.shortcut是我们快捷方式需要的Activityactivity-alias:对应的targetActivity是指向应用创建快捷方式使用的Activityandroid:label对应的创建快捷方式列表显示的文字,而该应用对应的快捷方式的图标则默认使用我们给定的application的图标。如图:好了,这是第一步步骤,下面进入代码阶段,先看代码:CodehighlightingproducedbyActiproCodeHighlighter(freeware){privatestaticfinalStringSHORT_CUT_EXTRAS=com.terry.extra.short;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);finalIntentintent=getIntent();finalStringaction=intent.getAction();if(Intent.ACTION_CREATE_SHORTCUT.equals(action)){createShortCut();finish();return;}Stringextra=intent.getStringExtra(SHORT_CUT_EXTRAS);LinearLayoutlayout=newLinearLayout(getApplicationContext());TextViewtv=newTextView(getApplicationContext());if(extra!=null)tv.setText(extra);layout.addView(tv);setContentView(layout);}voidcreateShortCut(){IntentshortcutIntent=newIntent(Intent.ACTION_MAIN);shortcutIntent.setClass(this,this.getClass());shortcutIntent.putExtra(SHORT_CUT_EXTRAS,测试的快捷方式);Intentintent=newIntent();intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,shortcutIntent);intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,这里随便指定);ParcelableshortIcon=Intent.ShortcutIconResource.fromContext(this,com.terry.attrs.R.drawable.icon);intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,shortIcon);setResult(RESULT_OK,intent);}}代码解释:onCreate方法,首先获取intent的action如果接收到的action为创建快捷方式的请求,则执行创建快捷方式的代码,否则则通过得到的extra为textView赋值。createShortCut方法,首先设置快捷方式点击后要跳转的intent和要带入的参数,然后设置桌面快捷方式的名称,图标和对应的intent(即上面带入数据和跳转的界面的class的Intent)最后将结果传入。最近运行的结果:跳击后到达的界面:

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功