【发布时间】:2012-04-09 23:52:55
【问题描述】:
我想知道 - 有没有办法在 Activity 之外访问 android 资源和/或资产文件(或任何其他文件夹中的文件)(不传递上下文)?
没有上下文无法访问:
getResources().getIdentifier("resource_name", "drawable", getPackageName());
getAssets().open("file_in_assets_folder_name");
如果不在 Activity 中则抛出异常:
try {
Class class = R.drawable.class;
Field field = class.getField("resource_name");
Integer i = new Integer(field.getInt(null));
} catch (Exception e) {}
也尝试了以下方法,但它抱怨文件不存在(这里做错了什么?):
URL url = new URL("file:///android_asset/file_name.ext");
InputSource source = new InputSource(url.openStream());
//exception looks like so 04-10 00:40:43.382: W/System.err(5547): java.io.FileNotFoundException: /android_asset/InfoItems.xml (No such file or directory)
【问题讨论】:
-
我真的无法理解。您想在活动之外访问 android 资源吗?如果不参加活动,你在哪里?安卓资源到底是什么?你的意思是喜欢预装的图标吗?
-
您是在扩展类中还是在某些您无权访问上下文的库类中?
-
@Marc:你为什么不想传递一个上下文?
-
yoshi - 据我了解,活动是用于用户交互的东西。因此,我的 RSS 和 XML 解析类不是活动。 MisterSquonk - 因为我更喜欢简单地有一个指向 xml 文件位置的常量变量。我可以为远程 xml 文件(rss 提要)执行此操作,为什么不能为我的应用程序中包含的文件执行此操作?
标签: android android-activity android-resources