简单的content provider

来源:互联网 发布:天敏网络机顶盒无信号 编辑:程序博客网 时间:2024/05/01 19:41

转: http://www.maxiaoguo.com/shipin/365.html 

学习Android以来,一直没有用过content provider,现在贴一下,简单的代码。


1、第一步: 写配置文件

<provider android:name=".VoiceContentProvider" android:authorities="com.example.settingactivity.VoiceContentProvider"/>  

2、第二步,根据配置文件写相应的contentProvider, 下面是我要共享 sp中的数据,所以我需要先把sp中的数据获取出来,然后再插入数据库中,然后在查到curser,返回出去

package com.example.settingactivity;import android.content.ContentProvider;import android.content.ContentValues;import android.content.Context;import android.content.SharedPreferences;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;import android.util.Log;public class VoiceContentProvider extends ContentProvider {public  String sharedPreferences_name = "italkSP";private SQLiteDatabase writableDatabase;private VoiceDBHelper dbHelper;@Overridepublic boolean onCreate() {dbHelper = new VoiceDBHelper(getContext());writableDatabase = dbHelper.getWritableDatabase();return false;}@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) { SharedPreferences sp = getContext().getSharedPreferences(sharedPreferences_name,                Context.MODE_PRIVATE);boolean openKeySound = sp.getBoolean("openKeySound", true);String deletTableSql ="delete from "+dbHelper.TAB_NAME;writableDatabase.execSQL(deletTableSql);String sql = "insert into "+dbHelper.TAB_NAME +"("+dbHelper.VOICESTATE +") values ('"+openKeySound +"')";writableDatabase.execSQL(sql);Cursor cur = writableDatabase.query(dbHelper.TAB_NAME, null,null,null, null, null, null);while(cur.moveToNext()){  int nameColumn = cur.getColumnIndex(dbHelper.VOICESTATE);  String name = cur.getString(nameColumn);  Log.i("tag", name);}return cur;}@Overridepublic String getType(Uri uri) {// TODO Auto-generated method stubreturn null;}@Overridepublic Uri insert(Uri uri, ContentValues values) {// TODO Auto-generated method stubreturn null;}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {// TODO Auto-generated method stubreturn 0;}@Overridepublic int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {// TODO Auto-generated method stubreturn 0;}}

DBHelper中的相关代码

package com.example.settingactivity;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class VoiceDBHelper  extends SQLiteOpenHelper {public static final String TAB_NAME = "voice_table";public static final String VOICESTATE = "voice_set_state";private SQLiteDatabase db;private static String DATABASE_NAME = "voice_db";private static int DATABASE_VERSION = 1;public VoiceDBHelper(Context context){super(context, DATABASE_NAME, null,DATABASE_VERSION);db = getWritableDatabase();}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE IF NOT EXISTS " + TAB_NAME + " (" + VOICESTATE + " boolean " +")");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}


这样已经把相关数据共享出去了,现在做的就是要接受 数据了。

接收端:

Cursor cursor = null;try {ContentResolver contentResolver = getContentResolver();cursor = contentResolver.query( CONTENT_PROVIDER,null, null, null, null); if(cursor!=null){ while(cursor.moveToNext()){ String columnName = cursor.getColumnName(0); int nameColumn = cursor.getColumnIndex(columnName); String name = cursor.getString(nameColumn); Toast.makeText(this, "现在按键声音状态是:"+name, Toast.LENGTH_LONG).show(); } }} catch (Exception e) {Toast.makeText(this, "获取声音信息失败!", Toast.LENGTH_LONG).show();}finally{if(cursor!=null){cursor.close();}}

Uri CONTENT_PROVIDER = Uri.parse("content://com.example.settingactivity.VoiceContentProvider");



0 0
原创粉丝点击