启动apk的常用方法
转载出处:http://www.open-open.com/lib/view/open1328536689889.html
方法一:最直接的就是知道apk的包名和启动类名, 直接启动
|
1
2
3
4
5
6
|
Intent
mIntent = newIntent(
);ComponentName
comp = newComponentName("包名", "类名"); mIntent.setComponent(comp);mIntent.setAction("android.intent.action.VIEW");startActivity(mIntent); |
方法二:如果只知道包名,在这种情况下通常也可以启动,通常调用publicabstract Intent getLaunchIntentForPackage(String packageName)
大概意思就是返回一个程序入口的Intent,就是Java程序的Main方法。直接startActivity(返回的intent)即可。
Intent mIntent = getPackageManager()getLaunchIntentForPackage(packageName);
if(mIntent
!= null) startActivity(mIntent);
方法三:就是如何只提供apk,如何启动呢?在这种情况下,通常只能在sdk源代码下来编译完成
通常引入android.content.pm.PackageParser;
见code:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/* *
Utility method to get application information for a given packageURI */public ApplicationInfo
getApplicationInfo(Uri packageURI) { finalString
archiveFilePath = packageURI.getPath(); PackageParser
packageParser = newPackageParser(archiveFilePath); File
sourceFile = newFile(archiveFilePath); DisplayMetrics
metrics = newDisplayMetrics(); metrics.setToDefaults(); PackageParser.Package
pkg = packageParser.parsePackage(sourceFile, archiveFilePath, metrics, 0); if(pkg
== null)
{ returnnull; } returnpkg.applicationInfo;} |
这样就可以得到该apk的包名,接下来方式就和方法二一样则可
日拱一卒百无有尽,功不唐捐终入海
浙公网安备 33010602011771号