真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android怎么獲取其他應(yīng)用中的assets資源-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)Android怎么獲取其他應(yīng)用中的assets資源,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的清水河網(wǎng)站建設(shè)公司,清水河接單;提供成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行清水河網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

一般我們獲取app內(nèi)的資源肯定是要獲取到Resource這個(gè)類(lèi),而Resource是通過(guò)Context類(lèi)的getResource獲取到了,所以我們只需要獲取到B應(yīng)用的Context類(lèi)就可以了。

可是其他App的Context怎么獲???其實(shí)Context 自己就有構(gòu)建Context的方法:createPackageContext。

  @Override
  public Context createPackageContext(String packageName, int flags)
    throws PackageManager.NameNotFoundException {
    return mBase.createPackageContext(packageName, flags);
  }

通過(guò)我們只需要傳入所需要App的包名,就可以構(gòu)造出對(duì)應(yīng)App的Context。第二個(gè)參數(shù)是一個(gè)配置標(biāo)記。

public static final int CONTEXT_INCLUDE_CODE = 0x00000001;
public static final int CONTEXT_IGNORE_SECURITY = 0x00000002;

第一個(gè)標(biāo)記是讓我們可以通過(guò)類(lèi)加載器去構(gòu)建相關(guān)類(lèi),但是需要第二個(gè)參數(shù)的配合:忽略安全限制。一般Flag就配置這樣個(gè)類(lèi)型。

在創(chuàng)建出Context之后,就可以通過(guò)獲取Resource類(lèi)去獲取對(duì)應(yīng)的資源了。

//栗子:獲取一個(gè)drawable 的id
      int identifier = bContext.getResources().getIdentifier("bg", "drawable", bContext.getPackageName());

但是assets中的資源就沒(méi)有這么方便了。雖然通過(guò)context可以獲取到對(duì)應(yīng)的assetsManager,但是在操作assetsManager獲取資源的時(shí)候就出現(xiàn)問(wèn)題了:在assets中獲取資源一般都是通過(guò)文件或者流的方式,但是我在操作的時(shí)候直接拋出異常,說(shuō)找不到我的資源名字。我這里檢查了好幾遍了,就是獲取不到。。。

那么這種情況下我想能不能通過(guò)反射去拿到我想需要的資源呢?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.e("GFZY", "onCreate: ");
    try {
      Context bContext = this.createPackageContext("pers.jibai.matrixtext"
          , Context.CONTEXT_INCLUDE_CODE
              | Context.CONTEXT_IGNORE_SECURITY);
      ClassLoader loader = bContext.getClassLoader();
      Class clazz = loader.loadClass("pers.jibai.matrixtext.A");
      Object a = clazz.getConstructor().newInstance();
      Method getAssetBg = clazz.getMethod("getBgMp4", Context.class);
      Log.e("GFZY", "onCreate: " + getAssetBg.getName());
      InputStream invoke = (InputStream) getAssetBg.invoke(a, bContext);
      BufferedReader reader = new BufferedReader(new InputStreamReader(invoke));
      String s = reader.readLine();
      reader.close();
      ((TextView) findViewById(R.id.t)).setText(s);
    } catch (Exception e) {
      e.printStackTrace();
      Log.e("GFZY", "onCreate: " + e.getMessage());
    }
  }

這是我的A應(yīng)用

public class A {
  public void asd() {
    Log.e("GFZY", "asd:我是matrix ");
  }
  public InputStream getBgMp4(Context context) {
    try {
      return context.getAssets().open("asd");
    } catch (IOException e) {
      e.printStackTrace();
    }
    return null;
  }
}

看完上述內(nèi)容,你們對(duì)Android怎么獲取其他應(yīng)用中的assets資源有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


當(dāng)前文章:Android怎么獲取其他應(yīng)用中的assets資源-創(chuàng)新互聯(lián)
新聞來(lái)源:http://weahome.cn/article/doosej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部