- 浏览: 144590 次
文章分类
最新评论
-
zhufoxmailcn:
有希望了!但原能解决小米二电信与4G卡的短信兼容性问题
android无法自动识别sim卡中短信中心号码(SMSC刷新error)的解决方法 -
dss16694:
hotdll 写道l楼主一不小心泄露了自己的手机号码?那是短信 ...
android无法自动识别sim卡中短信中心号码(SMSC刷新error)的解决方法 -
hotdll:
l楼主一不小心泄露了自己的手机号码?
android无法自动识别sim卡中短信中心号码(SMSC刷新error)的解决方法 -
hotdll:
hotdll 写道我的手机是E10I 分辨率为240*320的 ...
CM7最新联系人代码(追加自动IP拨号、拼音首字母快速检索等功能) -
hotdll:
我的手机是E10I 分辨率为240*320的,miniCM7, ...
CM7最新联系人代码(追加自动IP拨号、拼音首字母快速检索等功能)
1.私有数据存储xml形式(SharedPreferences)
SharedPreferences settins = getSharedPreferences("文件名",0) //获取一个SharedPreferences对象
读取数据:
String name = settings.get("KEY","");
写入/更新数据
settings.edit().putString("KEY","VALUE").commit();
数据保存位置:
在DDMS中的File Explorer中的展开到/data/data/<package name>/shared_prefs下<文件名>.xml
2.文件存储
String FILE_NAME = "tempfile.tmp";
FileOutputStream fos = openFileOutput(FILE_NAME , Context.MODE_PRIVATE);//初始化
Context.MODE_PRIVATE:写入的时候覆盖原有的内容。
Context.MODE_APPEND:写入的时候在原有的内容后面添加内容。
FileInputStream fis = openFileInput(FILE_NAME);//创建写入流
其他资源文件的使用:
例如mp3
资源文件放在/res/raw下
使用时:
Resources myResources = getResources();
InputStream myFile = myResources.openRawResource(R.raw.myfilename);
3.数据库的运用
定义SQLiteOpenHelper 并完成 创建 更新 功能
public class DBHelper extends SQLiteOpenHelper {
public static final String TB_NAME = "mycountry";
public static final String ID = "_id";
public static final String COUNTRY = "country";
public static final String CODE = "code";
//数据库对象构造函数
public DBHelper(Context context, String name,
CursorFactory factory,int version) {
super(context, name, factory, version);
}
//数据库创建函数
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS "
+ TB_NAME + " ("
+ ID + " INTEGER PRIMARY KEY,"
+ COUNTRY + " VARCHAR,"
+ CODE + " INTEGER)");
}
//数据库升级时候调用函数
public void onUpgrade(SQLiteDatabase db,
int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TB_NAME);
onCreate(db);
}
}
从SQLiteOpenHelper 得到SQLiteDatabase的实例
DBHelper helper = new DBHelper(this, DB_NAME, null, VERSION);
//得到一个可写的数据库对象
SQLiteDatabase db = helper.getWritableDatabase();
//得到一个可读的数据库对象
SQLiteDatabase db = helper.getReadableDatabase();
SQLiteDatabase 的一些操作:
插入数据:
ContentValues values = new ContentValues();
values.put(DBHelper.COUNTRY, "中国");
values.put(DBHelper.CODE, 86);
db.insert(DBHelper.TB_NAME,DBHelper.ID, values);
改动数据
1. db.insert(DBHelper.TB_NAME,DBHelper.ID,null);
2. values.clear();
3. values.put(DBHelper.COUNTRY, "意大利");
4. values.put(DBHelper.CODE, 39);
5. db.update(DBHelper.TB_NAME, values,DBHelper.ID + " = 2",null);
execSQL 执行SQL语言
1. db.execSQL("INSERT INTO "
2. + DBHelper.TB_NAME + "("
3. + DBHelper.COUNTRY + ","
4. + DBHelper.CODE + ") VALUES "
5. + "('洪都拉斯',504)");
查询数据
1. Cursor c = db.query(DBHelper.TB_NAME,null,null,null,null,null,
2. DBHelper.CODE+" DESC");
第一个参数为表名,
第二个字段是我们想要返回数据包含的列的信息,字符串数组形式
第三个参数是selection
第四个是selectionArgs
第五个是groupBy
第六个是having
第七个是orderBy
删除数据
1. db.delete(DBHelper.TB_NAME,null,null);
第一个参数是表名
第二个是selection
第三个是selectionArgs
如果存在这个表,就删除表
DROP TABLE IF EXISTS 表名
SimpleCursorAdapter notes = new SimpleCursorAdapter(this,R,layout.listview,myCursor,from,to)
第一个参数是context
第二个是ListView中每一项的布局
第三个是cursor
第四个是cursor列名
第五个是ListView中的组件ID
listview.setListAdapter(notes);
4.程序间数据共享ContentProvider Content provider
package com.eoeAndroid.contentProvider;
import java.util.Calendar;
import java.util.HashMap;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
import com.eoeAndroid.contentProvider.Diary.DiaryColumns;
public class DiaryContentProvider extends ContentProvider {
private static final String DATABASE_NAME = "database";
private static final int DATABASE_VERSION = 3;
private static final String DIARY_TABLE_NAME = "diary";
private static final int DIARIES = 1;
private static final int DIARY_ID = 2;
private static final UriMatcher sUriMatcher;
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
Log.i("jinyan", "DATABASE_VERSION=" + DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("jinyan", "onCreate(SQLiteDatabase db)");
String sql = "CREATE TABLE " + DIARY_TABLE_NAME + " ("
+ DiaryColumns._ID + " INTEGER PRIMARY KEY,"
+ DiaryColumns.TITLE + " TEXT," + DiaryColumns.BODY
+ " TEXT," + DiaryColumns.CREATED + " TEXT" + ");";
//
sql ="CREATE TABLE " + DIARY_TABLE_NAME + " ("
+ DiaryColumns._ID + " INTEGER PRIMARY KEY,"
+ DiaryColumns.TITLE + " varchar(255)," + DiaryColumns.BODY
+ " TEXT," + DiaryColumns.CREATED + " TEXT" + ");";
//
Log.i("jinyan", "sql="+sql);
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i("jinyan",
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)=
+ newVersion);
db.execSQL("DROP TABLE IF EXISTS diary");
onCreate(db);
}
}
private DatabaseHelper mOpenHelper;
static {
sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(Diary.AUTHORITY, "diaries", DIARIES);
sUriMatcher.addURI(Diary.AUTHORITY, "diaries/#", DIARY_ID);
}
@Override
public boolean onCreate() {
mOpenHelper = new DatabaseHelper(getContext());
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
switch (sUriMatcher.match(uri)) {
case DIARIES:
qb.setTables(DIARY_TABLE_NAME);
break;
case DIARY_ID:
qb.setTables(DIARY_TABLE_NAME);
qb.appendWhere(DiaryColumns._ID + "="
+ uri.getPathSegments().get(1));
break;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
String orderBy;
if (TextUtils.isEmpty(sortOrder)) {
orderBy = Diary.DiaryColumns.DEFAULT_SORT_ORDER;
} else {
orderBy = sortOrder;
}
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
Cursor c = qb.query(db, projection, selection, selectionArgs, null,
null, orderBy);
return c;
}
@Override
public String getType(Uri uri) {
switch (sUriMatcher.match(uri)) {
case DIARIES:
return DiaryColumns.CONTENT_TYPE;
case DIARY_ID:
return DiaryColumns.CONTENT_ITEM_TYPE;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
}
@Override
public Uri insert(Uri uri, ContentValues initialValues) {
if (sUriMatcher.match(uri) != DIARIES) {
throw new IllegalArgumentException("Unknown URI " + uri);
}
ContentValues values;
if (initialValues != null) {
values = new ContentValues(initialValues);
} else {
values = new ContentValues();
}
if (values.containsKey(Diary.DiaryColumns.CREATED) == false) {
values.put(Diary.DiaryColumns.CREATED, getFormateCreatedDate());
}
if (values.containsKey(Diary.DiaryColumns.TITLE) == false) {
Resources r = Resources.getSystem();
values.put(Diary.DiaryColumns.TITLE, r
.getString(android.R.string.untitled));
}
if (values.containsKey(Diary.DiaryColumns.BODY) == false) {
values.put(Diary.DiaryColumns.BODY, "");
}
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
long rowId = db.insert(DIARY_TABLE_NAME, DiaryColumns.BODY, values);
if (rowId > 0) {
Uri diaryUri = ContentUris.withAppendedId(
Diary.DiaryColumns.CONTENT_URI, rowId);
return diaryUri;
}
throw new SQLException("Failed to insert row into " + uri);
}
@Override
public int delete(Uri uri, String where, String[] whereArgs) {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
String rowId = uri.getPathSegments().get(1);
return db
.delete(DIARY_TABLE_NAME, DiaryColumns._ID + "=" + rowId, null);
}
@Override
public int update(Uri uri, ContentValues values, String where,
String[] whereArgs) {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
String rowId = uri.getPathSegments().get(1);
return db.update(DIARY_TABLE_NAME, values, DiaryColumns._ID + "="
+ rowId, null);
}
public static String getFormateCreatedDate() {
Calendar calendar = Calendar.getInstance();
String created = calendar.get(Calendar.YEAR) + "年"
+ calendar.get(Calendar.MONTH) + "月"
+ calendar.get(Calendar.DAY_OF_MONTH) + "日"
+ calendar.get(Calendar.HOUR_OF_DAY) + "时"
+ calendar.get(Calendar.MINUTE) + "分";
return created;
}
}
package com.eoeAndroid.contentProvider;
import android.net.Uri;
import android.provider.BaseColumns;
public final class Diary {
public static final String AUTHORITY = "com.ex09_2_contentprovider.diarycontentprovider";
private Diary() {}
/**
* Notes table
*/
public static final class DiaryColumns implements BaseColumns {
// This class cannot be instantiated
private DiaryColumns() {}
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/diaries");
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.diary";
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.diary";
public static final String DEFAULT_SORT_ORDER = "created DESC";
public static final String TITLE = "title";
public static final String BODY = "body";
public static final String CREATED = "created";
}
}
发表评论
-
读懂diff
2015-09-10 16:50 551转自http://www.ruanyifeng.com/bl ... -
【转】努比亚手机玩转双系统
2014-08-21 16:16 0转自miui论坛:http://www. ... -
Z7 MAX 原厂ROM内核修改
2014-08-21 16:04 0努比亚的Z7 MAX出厂时预装NUBIA UI,说实话不咋地 ... -
(转)boot.img的结构
2014-08-21 15:58 948转自CSDN:http://blog.csdn.net/z ... -
android手机霍尔开关的介绍
2014-08-11 15:24 9389转自CSDN:http://blog.csdn.net/wl ... -
(转)Ubuntu11.10(32位)编译android常见错误(30种常见的)
2014-04-01 13:58 0开始正式编译,在源码目录下make即可。 make ... -
Mokee适配教程(从CM10适配)
2013-09-10 11:27 2513转自魔趣论坛,原始链接为: http://bbs.mfu ... -
ubuntu 12.04 android 编译环境搭建
2013-07-21 06:30 938参考:http://source.android. ... -
miui V5收费主题破解
2013-04-14 01:17 0看到有个家伙在淘宝上卖这东西,感觉有点过分,号称历时2个月才 ... -
Scrolling cache关闭
2013-04-14 00:51 0Scrolling cache关闭后,感觉没什么效果吧。可以用 ... -
ubuntu 12.04的代理设置
2013-04-09 15:48 1674ubuntu 12.04的代理设置 ... -
重新打包ubi镜像
2013-03-18 15:51 2189从网上了解到ubi image不能像其他格式的文件系统ima ... -
为android增加重启菜单
2013-03-17 16:06 1892转自:http://blog.csdn.net/zzp16/ ... -
小米更改第一屏
2013-03-12 11:39 869su dd if=/sdcard/emmc_appsboo ... -
远程发送开机指令
2013-02-28 15:26 1604转发一段用java发送远程开机数据包的代码: 另外,在线发 ... -
tesseract3语言训练
2013-01-06 23:26 1085http://blog.wudilabs.org/entry/ ... -
安卓窗口动画修改制作心得,定制属于你自己的特效动画
2012-12-26 13:07 2007转载自:http://www.miui.com/thread- ... -
(转)android系统特效详解和修改方法
2012-12-20 12:03 1475转自安智网:http://bbs.anzhi.com/foru ... -
socket编程
2012-08-01 17:06 990暂时先贴下地址,省的忘记: http://duguyi ... -
CM9(4.0.4)状态栏美化(青白色风格)
2012-07-31 23:35 2902以下操作均在SystemUI.apk反编译所得文件的基础上进行 ...
相关推荐
Android 数据存储技术 Android 培训系列(三)--数据存储技术讲解
android 数据存储技术 详解,会对大家有帮助的。里面包含了SharedPreference,文件存储,SQLITE,ContentProvider 的相应的源码例子。
Android实现数据存储技术,JDBC连接数据库明细
Android数据存储技术中的SharedPreference存储,包括读取,删除,读取其他程序的SharedPreference
分别使用sqlite3工具和Android代码的方式建立SQLite数据库。在数据库建立完成后,编程实现基本的数据库添加和删除功能。创建一个学生管理的APP,基本信息包含学生姓名,班级,学号。采用数据库存储这些信息。应用...
android数据存储集锦源码 欢迎下载运行并查看效果。
图像与动画处理技术,利用OpenGL实现3D图形,多媒体应用开发,Android数据存储技术,Content Provider实现数据共享,线程与消息处理,Service应用,网络通信技术,综合案例—家庭理财通,课程设计—猜猜鸡蛋放在哪只...
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public ...
Android手机App程序中SQLite数据存储应用.pdf
NULL 博文链接:https://flycun2.iteye.com/blog/1909813
Android使用SharedPreferences和SQLite数据库实现数据存储
Android将数据写入Excel表格并存储到外部存储中
本次实验我们将在Android上完成一个通讯录的功能。首先我们将确定要实现的这个通讯录有什么样的功能,比如:浏览联系人、添加联系人、删除联系人、编辑联系人、查看联系人,当找到一个联系人之后,可以呼叫或者发送...
1、练习使用SharedPreferences方式进行数据存储和访问 2、练习使用SQLite数据库的方式进行数据存储和访问 三、实验原理 数据存储方式,SharedPreferences,SQLite。 四、实验步骤及关键技术 一.本项目包含以下四个...
Android移动平台开发-实验报告
Android数据持久化,SharedPreferences 、内部存储、外部存储、数据库简单使用
利用数据存储的文件内部存储开发技术,实现了一个简易的备忘录,其功能模块包括保存备忘录、读取备忘录等。