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