獲取SD卡中的apk資訊

2021-09-01 04:31:25 字數 2604 閱讀 8534

**:

/**

* 獲取未安裝的apk資訊

* * @param ctx

* @param apkpath

* @return

*/system.out.println(apkpath);

file apkfile = new file(apkpath);

if (!apkfile.exists() || !apkpath.tolowercase().endswith(".apk"))

string path_packageparser = "android.content.pm.packageparser";

string path_assetmanager = "android.content.res.assetmanager";

try ;

constructor<?> pkgparserct = pkgparsercls.getconstructor(typeargs);

object valueargs = ;

object pkgparser = pkgparserct.newinstance(valueargs);

//從pkgparsercls類得到parsepackage方法

displaymetrics metrics = new displaymetrics();

metrics.settodefaults();//這個是與顯示有關的, 這邊使用預設

typeargs = new class<?>;

method pkgparser_parsepackagemtd = pkgparsercls.getdeclaredmethod(

"parsepackage", typeargs);

valueargs=new object;

//執行pkgparser_parsepackagemtd方法並返回

object pkgparserpkg = pkgparser_parsepackagemtd.invoke(pkgparser,

valueargs);

if (pkgparserpkg==null)

return null;

}.get(pkgparserpkg);

//反射得到assetmagcls物件並例項化,無參

class<?> assetmagcls = class.forname(path_assetmanager);

object assetmag = assetmagcls.newinstance();

//從assetmagcls類得到addassetpath方法

typeargs = new class[1];

typeargs[0] = string.class;

method assetmag_addassetpathmtd = assetmagcls.getdeclaredmethod(

"addassetpath", typeargs);

valueargs = new object[1];

valueargs[0] = apkpath;

//執行assetmag_addassetpathmtd方法

assetmag_addassetpathmtd.invoke(assetmag, valueargs);

//得到resources物件並例項化,有引數

resources res = ctx.getresources();

typeargs = new class[3];

typeargs[0] = assetmag.getclass();

typeargs[1] = res.getdisplaymetrics().getclass();

typeargs[2] = res.getconfiguration().getclass();

constructorresct = resources.class

.getconstructor(typeargs);

valueargs = new object[3];

valueargs[0] = assetmag;

valueargs[1] = res.getdisplaymetrics();

valueargs[2] = res.getconfiguration();

res = (resources) resct.newinstance(valueargs);

// 讀取apk檔案的資訊

if (info!=null)

if (info.labelres != 0) else

string pkgname = info.packagename;// 包名

}else

packagemanager pm = ctx.getpackagemanager();

packageinfo packageinfo = pm.getpackagearchiveinfo(apkpath, packagemanager.get_activities);

if (packageinfo != null)

} catch (exception e)

return null;

}

獲取sd卡路徑

0 獲取sd卡路徑。1 講述 environment 類。2 講述 statfs 類。3 完整例子讀取 sdcard 記憶體 0 獲取sd卡路徑 方法一 private string folder sdcard dcim camera sd卡上拍照程式的儲存路徑 寫死絕對路徑,不贊成使用 方法二 p...

獲取apk中的證書資訊

從apk解壓出的資料夾中找到所有字尾名為cer pem cert crt pub key pfx p12的檔案路徑 這個專案的所有模組位於github 要找尋檔案路徑,在python中很容易,使用os.walk path 就能實現,但是在c 中,就需要自己編寫函式了 include include ...

如何獲取apk的簽名資訊?

在接入第三方功能時,經常要註冊提交apk的簽名資訊 sha1簽名 獲取apk簽名資訊的步驟 1 修改apk字尾名為zip,解壓得到其中的meta inf資料夾 2 把meta inf資料夾放到c盤根目錄下 3 在dos面板中,敲入命令 keytool printcert file c meta in...