在使用Android的资产访问方面,我面临着一种诅咒。我正在使用NetBeans 6.9.1,并在2.3Android虚拟设备上进行测试。我正在尝试访问存储在assets文件夹中的数据库文件("database.db") (尽管我不得不自己创建目录,因为它甚至不存在于我的项目文件夹中),而且在失去寻找解决方案的3天多之后,我根本无法这样做。这里总结一下我的悲剧性过程:
公共类DataBaseHelper扩展了SQLiteOpenHelper{私有静态字符串DB_PATH =“/data/data/org.me.androidbt/DB_PATH/”;私有静态字符串DB_NAME = "database.db";私有SQLiteDatabase myDataBase;私有最终上下文myContext;公共DataBaseHelper(上下文){超级(上下文,DB_NAME,null,1);this.myContext = context;} private ()抛出IOException{ // first,在第一行InputStream is =myContext.getAssets(“sub/sample.txt”)中爆炸。BufferedReader br =新BufferedReader(新InputStreamReader(is));字符串行=空;int数= 0;而((line =br.readLine() != null) { //仅用于调试number++时检查" line“值;} br.close();//第二次尝试,没有爆炸AssetManager mngr = myContext.getResources().getAssets();String[] str = mngr.list("");// String只包含三个元素:“图像”、“声音”和"webkit“// (在”我的资产“文件夹中没有这样的东西) // Real试图打开DB,死得可怕,吹起我的PC InputStream myInput =InputStream
我还尝试从MainActivity本身访问它:
try{
AssetManager mng = this.getAssets();
String[] str = mng.list("");
// The same three elements...
// And this explodes in a nuclear toxic cloud that kills a thousand birds
InputStream is = this.getAssets().open("sub/sample.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
int number = 0;
while ((line = br.readLine()) != null) {
number++;
}
br.close();
}catch(Exception e){
// Life is sad...
}现在,一些问题:我做错了什么?我的资产文件夹是否正确放置?我的文件被复制了吗?我的代码正确放置了吗?
发布于 2011-02-07 11:33:59
修复:
在项目根目录下创建一个名为“资产”的目录(与AndroidManifest.xml所在的目录相同)
In /nbproject/project.properties,更改
* exist)*添加了这两行(它不会使用)
assets.dir=assets assets.available=true
在/nbproject/built-in.xml中,
“if=assets.available”目标中有一行读取
这需要改变为
就是这样-您应该全部设置,“file:///android_asset/”应该可以访问您的应用程序,并包含您的项目的资产目录的内容。
找到这个链接了它对我有效!
http://blog.yetisoftware.com/2009/04/02/android-netbeans-and-the-assets-directory/
发布于 2014-09-10 08:54:23
我有这个问题,我建议你检查几件事:
)。
例如:assets -> app -> image,assets -> app -> another dir。在本例中,app dir是asssete根目录中的惟一dir。
https://stackoverflow.com/questions/4734928
复制相似问题