Android adb shell启动应用程序的方法2012-09-17 14:57:52
分类: LINUX
在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am.
usage: am [subcommand] [options]
start an Activity: am start [-D]
-D: enable debugging
send a broadcast Intent: am broadcast
start an Instrumentation: am instrument [flags]
-r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
-e : set argument to
-p : write profiling data to
-w: wait for instrumentation to finish before returning
start profiling: am profile start
stop profiling: am profile stop
specifications include these flags:
[-a ] [-d ] [-t ]
[-c [-c ] ...]
[-e|--es ...]
[--ez ...]
[-e|--ei ...]
[-n ] [-f ] []
启动的方法为
$ adb shell
$ am start -n {包(package)名}/{包名}.{活动(activity)名称}
程序的入口类可以从每个应用的AndroidManifest.xml的文件中得到,以计算器(calculator)为例,它的
package="com.android.calculator2" …>…
由此计算器(calculator)的启动方法为:
# am start -n com.android.calculator2/com.android.calculator2.Calculator
对于HelloActivity这个示例工程,AndroidManifest.xml如下所示:
package="com.example.android.helloactivity" …>
由此它的启动方法为:
# am start -n
com.example.android.helloactivity/com.example.android.helloactivity.HelloActivity 其他的一些应用启动命令,如下所示:
calendar(日历)的启动方法为:
# am start -n com.android.calendar/af021cdc9e31433239689398unchActivity
AlarmClock(闹钟)的启动方法为:
# am start -n com.android.alarmclock/com.android.alarmclock.AlarmClock
Music 和 Video(音乐和视频)的启动方法为:
# am start -n com.android.music/com.android.music.MusicBrowserActivity
# am start -n com.android.music/com.android.music.VideoBrowserActivity
# am start -n com.android.music/com.android.music.MediaPlaybackActivity
Camera(照相机)的启动方法为:
# am start -n com.android.camera/com.android.camera.Camera
Browser(浏览器)的启动方法为:
# am start -n com.android.browser/com.android.browser.BrowserActivity
一般情况希望,一个Android应用对应一个工程。值得注意的是,有一些工程具有多个活动(activity),而有一些应用使用一个工程。例如:在 Android界面中,Music和Video是两个应用,但是它们使用的都是packages/apps/Music这一个工程。而在这个工程的AndroidManifest.xml文件中,有包含了不同的活动(activity)。
Music 和 Video(音乐和视频)的启动方法为:
# am start -n com.android.music/com.android.music.MusicBrowserActivity
# am start -n com.android.music/com.android.music.VideoBrowserActivity # am start -n com.android.music/com.android.music.MediaPlaybackActivity Camera(照相机)的启动方法为:
# am start -n com.android.camera/com.android.camera.Camera
Browser(浏览器)的启动方法为:
# am start -n com.android.browser/com.android.browser.BrowserActivity 启动浏览器 :
am start -a android.intent.action.VIEW -d af021cdc9e31433239689398/
拨打电话 :
am start -a android.intent.action.CALL -d tel:10086
启动 google map 直接定位到北京 :
am start -a android.intent.action.VIEW geo:0,0?q=beijing
url:af021cdc9e31433239689398/archive/2012/02/10/android-am
Android中如何获取系统应用程序列表与AndroidManifest.xml信息
11人收藏此文章, 我要收藏发表于6个月前(2013-04-17 15:25) , 已有318次阅读,共0个评论
摘要 Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理) 等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。通过它,我们就可以获取应用程序信息。 PackageManager
Android 系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理) 等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。通过它,我们就可以获取应用程序信息。
PackageManager的功能:
?安装,卸载应用
?查询permission相关信息
?查询Application相关信息(application,activity,receiver,service,provider及相应属性等)
?查询已安装应用
?增加,删除permission
?清除用户数据、缓存,代码段等
我们可以用PackageManager来显示系统安装的应用程序列表或者系统程序列表
相关类的介绍
PackageItemInfo类
说明: AndroidManifest.xml文件中所有节点的基类,提供了这些节点的基本
信息:a label、icon、 meta-data。它并不直接使用,而是由子类继承然后调用相应方法。
常用字段:
public int icon 获得该资源图片在R文件中的值 (对应于android:icon属性)
public int labelRes 获得该label在R文件中的值(对应于android:label属性)
public String name 获得该节点的name值 (对应于android:name属性)
public String packagename 获得该应用程序的包名 (对应于android:packagename属性)
常用方法:
Drawable loadIcon(PackageManager pm) 获得当前应用程序的图像CharSequence loadLabel(PackageManager pm) 获得当前应用程序的label
ActivityInfo类
继承自 PackageItemInfo
说明:获得应用程序中或者
我们可以通过它来获取我们设置的任何属性,包括 theme 、launchMode、launchmode等
常用方法继承至PackageItemInfo类中的loadIcon()和loadLabel()
ServiceInfo 类
说明:同ActivityInfo类似,同样继承自 PackageItemInfo,只不过它表示的是
ApplicationInfo类
继承自 PackageItemInfo
说明:获取一个特定引用程序中节点的信息。
字段说明:
flags字段: FLAG_SYSTEM 系统应用程序
FLAG_EXTERNAL_STORAGE 表示该应用安装在sdcard中
常用方法继承至PackageItemInfo类中的loadIcon()和loadLabel()
ResolveInfo类
说明:根据
常用字段:
public ActivityInfo activityInfo 获取 ActivityInfo对象,即或
public ServiceInfo serviceInfo 获取 ServiceInfo对象,即节点信息
常用方法:
Drawable loadIcon(PackageManager pm) 获得当前应用程序的图像CharSequence loadLabel(PackageManager pm) 获得当前应用程序的label
PackageInfo类
说明:手动获取AndroidManifest.xml文件的信息。
常用字段:
public String packageName 包名
public ActivityInfo[] activities 所有节点信息
public ApplicationInfo applicationInfo 节点信息,只有一个public ActivityInfo[] receivers 所有
public ServiceInfo[] services 所有
PackageManger 类
说明:获得已安装的应用程序信息。
可以通过getPackageManager()方法获得。
常用方法:
public abstract PackageManager getPackageManager()
功能:获得一个PackageManger对象
public abstrac tDrawable getApplicationIcon(StringpackageName)
参数: packageName 包名
功能:返回给定包名的图标,否则返回null
public abstract ApplicationInfo getApplicationInfo(String packageName, int flags)
参数:packagename 包名 flags 该ApplicationInfo是此flags标记,通常可以直接赋予常数0即可
功能:返回该ApplicationInfo对象
public abstract List getInstalledApplications(int flags)
参数:flag为一般为GET_UNINSTALLED_PACKAGES,那么此时会返回所有ApplicationInfo。
我们可以对ApplicationInfo 的flags过滤,得到我们需要的。
功能:返回给定条件的所有PackageInfo
public abstract List
参数如上
功能:返回给定条件的所有PackageInfo
public abstractResolveInfo resolveActivity(Intent intent, int flags)
参数: intent 查寻条件,Activity所配置的action和category flags:MATCH_DEFAULT_ONLY :Category必须带有CATEGORY_DEFAULT的Activity,才匹配 GET_INTENT_FILTERS :匹配Intent条件即可 GET_RESOLVED_FILTER :匹配Intent条件即可功能:返回给定条件的ResolveInfo对象(本质上是Activity)
public abstract List
参数同上
功能:返回给定条件的所有ResolveInfo对象(本质上是Activity),集合对象
public abstract ResolveInfo resolveService(Intent intent, int flags) 参数同上
功能:返回给定条件的ResolveInfo对象(本质上是Service)
public abstract List
参数同上
功能:返回给定条件的所有ResolveInfo对象(本质上是Service),集合对象
拓跋鼠
人生就像一场旅途,不在乎终点,而是注重过程,我们需要选择方向,更需要思考方法与策略。
Android学习笔记之AndroidManifest.xml文件解析
一、关于AndroidManifest.xml
AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)
二、AndroidManifest.xml结构
三、各个节点的详细介绍
上面就是整个am(androidManifest).xml的结构,下面以外向内开始阐述~~1、第一层(
android:sharedUserId="string" android:sharedUserLabel="string resource" android:versionCode="integer" android:versionName="string" android:installLocation=["auto" | "internalOnly" | "preferExternal"] >

