2016-04-12 22 views
0

Diğer apk resouce'ları almak için getPackageArchiveInfo kullanmak istiyorum, ama null olsun, nerede hata olduğunu bilmiyorum. bu benim kodum.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); 
    } 

ilk ben sonra ben PackageInfo almak için kullanabilirsiniz, PackageManager olsun ama PackageInfo null. Hala gerekli bilgilerden herhangi vermeyin

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
+0

: Uygulama dizinde olmayan bir dosya okurken eğer – Stultuske

cevap

0

Aşağıdaki izni cevapsız olabilir. Hangi PackageManager sınıfından bahsediyoruz? Kendin yazdığın bir mi? değişken olarak ne geçersiniz? kodunuzu ayıklar mısınız?