Android 如何调用自写APK和非自写APK

由于项目需要,调用一个现成的APK,总结之余,顺便把怎么调用自写APK的方法也写上,以做比较

 

1.如何调用现成的APK:

先上调用代码,然后再一一解释:

1  Intent mIntent = new Intent();
2         ComponentName comp = new ComponentName(arg1,
3 arg2);
4         mIntent.setComponent(comp);
5         mIntent.setAction("android.intent.action.MAIN");
6    
7         startActivity(mIntent);
8 arg1:package name
9 arg2:apk name 

不难发现,其实就是一个普通的启动一个Activity的方法,一般大家的疑问都在,arg1: package name 和arg2: apk name 是怎么得到的。

具体操作如下:先安装此APK到机器或模拟器上,然后手动启动这个APK,然后同时用LogCat抓Log信息,package name很好理解,需要注意,apk name是全名(加上包名前缀)

如:

package name : com.robert.maps,

apk name : com.robert.maps.MainMapActivity

总结:此方归结起来就一句话,安装APK以后,手动执行这个apk, 看log中的信息,然后构造一个Intent,使用Intent就可以起来。

 

2.如何调用自写APK:

虽然这个知识点,学过Android 的人都知道,但是本文为了做比较,顺便理下思路,所以还是写上了。

首先自写APK,必定有其manifest.xml的源码,如:

<activity
        android:name="com.example.test.TestActivity"
        android:label="@string/app_name" >
 
    <!--<intent-filter>
             <action android:name="android.intent.action.MAIN" />
 
             <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter> 
    -->
         <intent-filter >
              <action android:name="testApp"/>
              <category android:name="android.intent.category.DEFAULT"/>
         </intent-filter>
</activity>

其次,安装此APK(2种方法都需要安装,这就不用多解释了吧),但是系统中找不到这个程序。别急,它确实安装在手机里面了,但是因为他不是main的,所以系统不会把他当做Application的入口程序。而要想打开这 个activity,只有知道它名字的人才可以。跟系统的intent一样使用。它的名字定义为"testApp",所以,这里用这个字符串就可以调用它了:

Intent intent = new Intent("testApp");
startActivity(intent);

总结:更改该APK的manifest.xml文件,将intent-filter下的Action属性由系统的android.intent.action.MAIN更改为自定义的字串,再将intent-filter下的category属性由launcher改为default,然后通过带Action参数的Intent构造方法,来启动这个Activity,也就是这个APK。

posted on 2015-11-20 17:43  找工作中  阅读(896)  评论(0编辑  收藏  举报