有的时候,项目会需要调用别人的应用程序,比如拨号、短信什么的(都是现在rom改的太多了,这些基础应用都一样,碎片化太严重),下面我给出两种方法来实现:

一、通过packmanager的getLaunchIntentForPackage方法

[html]  view plain copy
  1. PackageManager packageManager = MainActivity.this.getPackageManager();   
  2. Intent intent=new Intent();   
  3.     try {   
  4.     intent =packageManager.getLaunchIntentForPackage("要调用应用的包名");   
  5. } catch (NameNotFoundException e) {   
  6. Log.i(TAG, e.toString());   
  7. }   
  8. startActivity(intent);   

这个比较简单,包名的话,可以根据packagemanager获取到packageInfo,最后还可以根据intent获取到componentname。

二、通过intent的resolveActivity方法

[html]  view plain copy
  1. Intent it = new Intent(Intent.ACTION_MAIN);  
  2.         it.setPackage(pkg);//pkg为包名  
  3.         it.addCategory(Intent.CATEGORY_LAUNCHER);  
  4.         ComponentName ac = it.resolveActivity(mPackageManager);//mPackageManager为PackageManager实例  
  5.         String classname =ac.getClassName() ;  

这种方法是受到了activitymanagerservice源码的启发,创建一个category_lancher类型的intent,然后向PackageManagerService查询Activity。


说明:resolveActivity()方法默认使用MATCH_DEFAULT_ONLY的flag ,是指activity中的catetory必须要包含android.intent.category.DEFAULT类型,否则会返回null。这时可以用 PackageManager 的getLaunchIntentForPackage()方法直接获取intent,再通过intent的getcomonent().getClassName()获取类名,另外getLaunchIntentForPackage() 是PackageManager 的一个抽象方法,其实现是在ApplicationPackageManager包内。


最后补充一点:

过 PackageInfo  获取具体信息方法:

包名获取方法:packageInfo.packageName
icon获取获取方法:packageManager.getApplicationIcon(applicationInfo)
应用名称获取方法:packageManager.getApplicationLabel(applicationInfo)
使用权限获取方法:packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions


通过 ResolveInfo 获取具体信息方法:


包名获取方法:resolve.activityInfo.packageName
icon获取获取方法:resolve.loadIcon(packageManager)
应用名称获取方法:resolve.loadLabel(packageManager).toString()

更多相关文章

  1. Android(安卓)Studio基本常用快捷键
  2. Android学习—Button的四种OnClick响应方法
  3. android 上傳圖片的幾種方法
  4. Android使用Broadcast实现无序静态与动态广播功能
  5. Android(安卓)中添加水平线和垂直线方法总结
  6. [android] ScrollView 设置滚动条的初始位置
  7. Android(安卓)ApiDemos示例解析(39):App->Service->Local Service
  8. Android(安卓)libmp3lame详解
  9. Android(安卓)Zxing 添加闪光灯功能

随机推荐

  1. android google map key申请
  2. Android视音频录制实现步骤(Android学习随
  3. [Android]Kernel的下载和编译
  4. AndroidMenifest.xml中android:sharedUse
  5. 与屏幕有关的设置:禁止横竖屏切换;横竖屏切
  6. android获取应用内自定义权限与权限使用
  7. 一个Demo让你掌握所有的android控件
  8. Android(安卓)单独抽取 WebRtc-NS/NSX(音
  9. Android高效率编码-findViewById()的蜕变
  10. Gradle in Android(安卓)Studio: Failed