启动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的包名,接下来方式就和方法二一样则可


posted @ 2015-08-05 11:21  稻香鱼  阅读(424)  评论(0)    收藏  举报