0
Я хочу использовать getPackageArchiveInfo для получения другого ресурса apk, но я получаю null, я не знаю, где ошибка. это мой код.почему getPackageArchiveInfo return null
public void loadSkinAsync(String dexPath, final loadSkinCallBack callback) {
new AsyncTask<String, Void, Resources>() {
protected void onPreExecute() {
if (callback != null) {
callback.startloadSkin();
}
}
@Override
protected Resources doInBackground(String... params) {
try {
if (params.length == 1) {
String dexPath_tmp = params[0];
File file = new File(dexPath_tmp);
PackageManager mPm = mContext.getPackageManager();
PackageInfo mInfo = mPm.getPackageArchiveInfo(dexPath_tmp, PackageManager.GET_ACTIVITIES);
mPackageName = mInfo.packageName;
AssetManager assetManager = AssetManager.class.newInstance();
Method addAssetPath = assetManager.getClass().getMethod("addAssetPath", String.class);
addAssetPath.invoke(assetManager, dexPath_tmp);
Resources superRes = mContext.getResources();
Resources skinResource = new Resources(assetManager, superRes.getDisplayMetrics(), superRes.getConfiguration());
return skinResource;
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
protected void onPostExecute(Resources result) {
mResources = result;
if (callback != null) {
if (mResources != null) {
callback.loadSkinSuccess();
} else {
callback.loadSkinFail();
}
}
}
}.execute(dexPath);
}
Сначала я получаю PackageManager, затем я использую его для получения PackageInfo, но PackageInfo имеет значение null.
вы до сих пор не обеспечивают какой-либо требуемой информации. о каком классе PackageManager мы говорим? это тот, который вы написали? что вы передаете как переменные? вы отлаживали свой код? – Stultuske