从另一个类

时间:2016-03-08 14:03:25

标签: android

抱歉我的英文。我有一个名为Server的类,我需要从我的应用程序资产中的文件中读取URL,但AssetManager android studio表示无法从外部程序包访问它,getassets()也不能正常工作。如何从非活动类访问资产?

3 个答案:

答案 0 :(得分:0)

  

如何从非活动类

访问资产

要访问您需要的资产Context。因此,如果您需要从资产中获取所有内容,请将其中一个传递给您的班级(通过构造函数或其他方式),或者只是传递您的网址

答案 1 :(得分:0)

非活动类

public CustomClass(Context myContext) {
AssetManager mngr = myContext.getAssets();
InputStream is = mngr.open("text.txt");   // get text file 
 try {
     InputStream bitmap = myContext.getAssets().open("imagename.png");// get iamge file 
     Bitmap bit = BitmapFactory.decodeStream(bitmap);
     //imgview.setImageBitmap(bit);
     }
    catch (IOException e1) {
     e1.printStackTrace();
    }
 }

一样打电话给班级
     CustomClass(getApplicationContext()) ;              //activity
     CustomClass(getActivity().getApplicationContext());  //fragment

答案 2 :(得分:0)

我认为getAssets仅适用于Activity Class。在普通类中应用它的一种方法是使用Context参数创建构造函数中的引用getAssets的构造函数。

public DataFile(Context DataContext){
        try {
            AssetManager am = DataContext.getAssets();// If this line gives you ERROR then try AssetManager am=getActivity().getAssets();
            InputStream mInpuStream = am.open("Question.xls");
            Workbook mWorkBook = jxl.Workbook.getWorkbook(mInpuStream);
            Sheet mSheet = mWorkBook.getSheet(0);
            int mRow = mSheet.getRows();
            int mCol = mSheet.getColumns();
            String mContent = "";
            for (int i = 0; i < mRow; i++) {
                for (int c = 0; c < mCol; c++) {
                    Cell mCell = mSheet.getCell(c, i);
                    mContent = mContent + mCell.getContents();

                }
                mContent = mContent + "\n";
            }
            display(mContent);
        } catch (Exception e) {

        }
    }