如何根据Android 运行时的进程名找到对应APK包路径

原文地址:http://blog.csdn.net/chb2000/article/details/6881297 

在客制化ROM的时候,我们如果找到一个好用的内置APK程序,想要Porting到自己的ROM中来,但是有时程序运行时的名称和实际的APK包的名并不统一或者差异非常大,那我们如何通过Setting/Application的程序名找到对应APK程序包呢?

我们只要取出/data/system/packages.xml文件就可以马上知道对应的APK包的名称。

codePath就是对应的APK包的路径。

======居然没有找到cost_money

"app has access to the following"
:services that cost you money
directly call phone numbers.. ......

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   
package="com.me.app.myapp" >
   
<permission android:name="com.me.app.myapp.permission.DEADLY_ACTIVITY"
       
android:label="@string/permlab_deadlyActivity"
       
android:description="@string/permdesc_deadlyActivity"
       
android:permissionGroup="android.permission-group.COST_MONEY"
       
android:protectionLevel="dangerous" />
    ...
</manifest>

 

<package name="com.motorola.mediashare" codePath="/system/app/HomeSyncWizard.apk" flags="1" ts="1217592000000" version="1" sharedUserId="10073">
< sigs count="1">
< cert index="0" />
< /sigs>
< /package>

 

其实我们看到这个命名和apple的要求是一样的,倒过来的DNS

<package name="com.futuredial" codePath="/system/app/Transfer-marvel-8.20.0.22-S21.apk"

 

== ===  ===获取已安装程序的名字、包名、版本和图标

  1. class PInfo {   
  2.     private String appname = "";   
  3.     private String pname = "";   
  4.     private String versionName = "";   
  5.     private int versionCode =0;   
  6.     private Drawable icon;   
  7.     private void prettyPrint() {   
  8.         log(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode +"\t");   
  9.     }   
  10. }   
  11.    
  12. private void listPackages() {   
  13.     ArrayList<PInfo> apps = getInstalledApps(false);/* false = no system packages */   
  14.     final int max = apps.size();   
  15.     for (int i=0; i<max; i++) {   
  16.         apps.get(i).prettyPrint();   
  17.     }   
  18. }   
  19.    
  20. private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {   
  21.     ArrayList<PInfo> res = new ArrayList<PInfo>();           
  22.     List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);   
  23.     for(int i=0;i<packs.size();i++) {   
  24.         PackageInfo p = packs.get(i);   
  25.         if ((!getSysPackages) && (p.versionName ==null)) {   
  26.             continue ;   
  27.         }   
  28.         PInfo newInfo = new PInfo();   
  29.         newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();   
  30.         newInfo.pname = p.packageName;   
  31.         newInfo.versionName = p.versionName;   
  32.         newInfo.versionCode = p.versionCode;   
  33.         newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());   
  34.         res.add(newInfo);   
  35.     }   
  36.     return res;    
  37. }   

 

你可能感兴趣的:(apple,android,String,System,Class,Access)