Android 数据库随apk一起打包 及带参数跳转到拨号界面

大多数都是在网上copy下来的:

首先将数据库文件放在assets这个资源目录下,then...

其中databaseutil如下:

package com.sunmoon.db;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.util.Log;

import com.baoxiu123.getstuinfo.R;

public class DataBaseUtil {

	private Context context;
	public static String dbName = "stu.db";
	private static String DATABASE_PATH;
	
	
	public DataBaseUtil(Context context) {
		this.context = context;
		String packageName = context.getPackageName();
		DATABASE_PATH = "/data/data/"+packageName+"/databases/";
	}
    /** 
     * 判断数据库是否存在 
     *  
     * @return false or true 
     */  
    public boolean checkDataBase() {  
        SQLiteDatabase db = null;  
        try {  
            String databaseFilename = DATABASE_PATH + dbName;  
            db = SQLiteDatabase.openDatabase(databaseFilename, null,SQLiteDatabase.OPEN_READONLY);  
        } catch (SQLiteException e) {  
  
        }  
        if (db != null) {  
            db.close();  
        }  
        return db != null ? true : false;  
    } 
    
    /** 
     * 复制数据库到手机指定文件夹下 
     *  
     * @throws IOException 
     */  
    public void copyDataBase() throws IOException {  
        String databaseFilenames = DATABASE_PATH + dbName;  
        File dir = new File(DATABASE_PATH);  
        if (!dir.exists())// 判断文件夹是否存在,不存在就新建一个  
            dir.mkdir();  
        FileOutputStream os = new FileOutputStream(databaseFilenames);// 得到数据库文件的写入流  
        InputStream is = context.getResources().getAssets().open(dbName);// 得到数据库文件的数据流  
        byte[] buffer = new byte[8192];  
        int count = 0;  
        while ((count = is.read(buffer)) > 0) {  
            os.write(buffer, 0, count);  
            os.flush();  
        }  
        is.close();  
        os.close();  
    }  
	
}
然后再写出调用函数:

// 检查数据库是否已经存在
	public void check_db() {
		Log.i("TAG", "clicked..");

		boolean hasSDCard = Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED);
		if (hasSDCard) {
			copyDataBaseToPhone();
		} else {
			Toast.makeText(MainActivity.this, "未检测到SDCard", 0).show();
		}
	}

	private void copyDataBaseToPhone() {
		DataBaseUtil util = new DataBaseUtil(this);
		// 判断数据库是否存在
		boolean dbExist = util.checkDataBase();

		if (dbExist) {
			Log.i("tag", "The database is exist.");
		} else {// 不存在就把raw里的数据库写入手机
			try {
				util.copyDataBase();
			} catch (IOException e) {
				throw new Error("Error copying database");
			}
		}
	}
在需要用的地方调用check_db就可以了


带参数跳转到拨号界面这个很简单,用一个intent就好

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"
				+ "1570035xxoo"));

		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		startActivity(intent);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水中加点糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值