二、在SD卡上创建数据库

通过android的SQLiteOpenHelper类的源码,可以看到SQLiteOpenHelper类的getWritableDatabase

这个接口实际上调用的是Context的openOrCreateDatabase方法,而这个方法是不支持带路径的数据库名

称的,也就是说,用这个方法创建的数据库只能放在/data/data/包名称/ 目录下;要想在SD卡上创建数据库

,我们可以调用SQLiteDatabase类的openOrCreateDatabase方法,这个方法是支持带路径的数据库名称的。

那么下面的问题就是如何判断是否存在SD卡,已经如何获取SD卡的路径了?

判断是否存在SD卡:

android.os.Environment.MEDIA_MOUNTED.equals(

android.os.Environment.getExternalStorageState());

获取SD卡路径:String dbPath=android.os.Environment.getExternalStorageDirectory()

.getAbsolutePath();

在SD卡上创建数据库方法如下:

String dbPath=android.os.Environment.getExternalStorageDirectory()

.getAbsolutePath()+"/database";
File dbp=new File(dbPath);
File dbf=new File(dbPath+"/"+"test.db");


if(!dbp.exists()){
dbp.mkdir();
}

//数据库文件是否创建成功
boolean isFileCreateSuccess=false;

if(!dbf.exists()){
try{
isFileCreateSuccess=dbf.createNewFile();
}
catch(IOException ioex){

}

}
else{

isFileCreateSuccess=true;
}
if(isFileCreateSuccess)
db = SQLiteDatabase.openOrCreateDatabase(dbf, mFactory);


为了简便起见,我们可以用上述方法重写SQLiteOpenHelper类的getWritableDatabase方法,

其他逻辑参照SQLiteOpenHelper类即可。最后别忘了,加入SD卡的读写权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

更多相关文章

  1. Android(安卓)Studio | 报错处理 | ERROR: Could not find com.a
  2. Android相机Camera2的简单分析
  3. Android中使用apache commons-net发送后台邮件的方法
  4. android 完全区分double-tap 与 singal-tap 的方法
  5. Android获取其他包的Context实例然后干坏事
  6. Android音频播放
  7. Android三种菜单简介
  8. android集成友盟推送,点击通知,先启动应用,然后再跳指定 界面;应用前
  9. android 拍照和从相册选择组件

随机推荐

  1. Android实现圆角照片和圆形照片
  2. android获取NetworkMode
  3. android 音视频录制
  4. Android跳转浏览器打开URL
  5. Android引入外部字体源代码
  6. 安卓shape属性详细介绍
  7. android plugin dsl 部分整理
  8. Android(安卓)Camera框架分析
  9. 给两到五年经验的Android面试者
  10. Android(安卓)LinearLayout和FrameLayout