绝对可以将数据库打开为世界可读/可写。但是,数据库的必要性是什么?你可以改用文件..!!
不建议将数据库打开为世界可读/可写。
永远记住这一点:
仅在必要时打开数据库,
因为它很昂贵。
仅在必要的模式下打开
读或写或两者兼而有之。
- 一旦操作就关闭它
结束了。
如果您想在您的应用程序之间共享数据库或资源,您可以使用 SharedUserID。为了使用 SharedUserID,应用程序必须由相同的 Key 签名。
有关更多信息,请参阅我在 sree.cc 上的帖子
http://sree.cc/google/android/sharing-resources-in-different-aplications-using-shareduserid
这是相同的代码片段:
private void getDB() {
//accessing file using SHAREDUSERID
try
{
//creating context from mainAPP for accessing database
ctx = createPackageContext(
"com.schogini.sharedDB.pack",
Context.CONTEXT_IGNORE_SECURITY);
if(ctx==null){
return;
}
}
catch (PackageManager.NameNotFoundException e) {
//package not found
Log.e("Error",e.getMessage());
}
try
{
File myDbFile = ctx.getDatabasePath("sharedDB.db");
if (myDbFile.exists())
{
dbb = openOrCreateDatabase(myDbFile.getPath(), SQLiteDatabase.OPEN_READWRITE, null);
dbb.setVersion(1);
dbb.setLocale(Locale.getDefault());
dbb.setLockingEnabled(true);
try{
cur=dbb.rawQuery("select * from TABLENAME;",null);
try{
cur.moveToFirst();
int k=cur.getColumnCount();
lv_arr=new String[k];
for(int i=0;i<k;i++)
{
lv_arr[i]=""+cur.getString(i);
Toast.makeText(LaunchActivity.this, "Data "+i, Toast.LENGTH_SHORT).show();
}
}
catch(Exception e)
{
//may be an empty database
Log.e("Error",e.getMessage());
dbb.close();
}
}
catch(Exception e)
{
Log.e("Error",e.getMessage());
dbb.close();
}
}
else
{
//database not found
Toast.makeText(LaunchActivity.this, "DataBase Doesnot Exist", Toast.LENGTH_SHORT).show();
}
}
catch(Exception e)
{
Log.i("\n\nTAG",e.toString());
}
}
不推荐:
如果你想让这个词可读,那么就让它成为世界可读的。使用openFileOutput() 或openOrCreateDatabase()。将创建数据库的上下文声明为 World 可读。请注意,这种方法无论如何都不安全。
在这里做一个参考。
http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE