国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 自定義ContentProvider簡單實例

2019-12-12 02:38:07
字體:
來源:轉載
供稿:網友

Android 自定義ContentProvider簡單實例

Android允許我們定義自己的的ContentProvider對象來共享數據,練練手,簡單來實現一下。

要使用ContentProvider來操作數據,必須要有保存數據的場所。可以使用文件或SQLite數據庫的方式來保存數據,通常使用SQLite數據庫。

1,創建一個數據庫幫助類,歸根結底都是它在操作數據庫。代碼如下:

package com.njue;  import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper;  public class DBManager extends SQLiteOpenHelper { public static final String myProvider_table_name="myProvider_table_name"; String sql="create table myProvider_table_name(id integer,name text)";   public DBManager(Context context) {     super(context, "myPrivoder.db", null, 1);     // TODO Auto-generated constructor stub   }    @Override   public void onCreate(SQLiteDatabase arg0) {     // TODO Auto-generated method stub    arg0.execSQL(sql);   }    @Override   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {     // TODO Auto-generated method stub    }  } 

2,創建一個myProvider類,該類繼承ContentProvider,實現其抽象方法來操作數據庫,該類引用DBManager類來獲得數據庫實例。

package com.njue;  import android.content.ContentProvider; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri;  public class myProvider extends ContentProvider {   DBManager dbHelper;   @Override   public int delete(Uri arg0, String arg1, String[] arg2) {     // TODO Auto-generated method stub     SQLiteDatabase db=dbHelper.getWritableDatabase();     int id=db.delete(DBManager.myProvider_table_name, arg1, arg2);     if(id!=0)return id;     return 0;   }    @Override   public String getType(Uri uri) {     // TODO Auto-generated method stub     return null;   }    @Override   public Uri insert(Uri uri, ContentValues values) {     // TODO Auto-generated method stub     SQLiteDatabase db=dbHelper.getWritableDatabase();     db.insert(DBManager.myProvider_table_name, "id", values);     return null;   }    @Override   public boolean onCreate() {     // TODO Auto-generated method stub     dbHelper=new DBManager(getContext());     return true;   }    @Override   public Cursor query(Uri uri, String[] projection, String selection,       String[] selectionArgs, String sortOrder) {     // TODO Auto-generated method stub     SQLiteDatabase db=dbHelper.getWritableDatabase();     Cursor c=db.query(DBManager.myProvider_table_name,projection, selection, selectionArgs, null, null, sortOrder);     return c;   }    @Override   public int update(Uri uri, ContentValues values, String selection,       String[] selectionArgs) {     // TODO Auto-generated method stub     SQLiteDatabase db=dbHelper.getWritableDatabase();     int id=db.update(DBManager.myProvider_table_name, values, selection, selectionArgs);     if(id!=0)return id;     return 0;   }  } 

3,ContextProvider必須聲明才能使用,因此,需要在AndroidManifest.xml配置文件中聲明。聲明很簡單,需要類名稱和授權名稱兩個屬性。

<provider android:name="myProvider"     android:authorities="com.njue.myProvider" /> 

 到這里,我們自定義的ContentProvider就完成了。我們可以在Eclipse中的File Explorer 窗口中看到自定義的ContentProvider

 4,簡單測試

package com.njue;  import android.app.Activity; import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView;  public class Content_providerActivity extends Activity {   /** Called when the activity is first created. */    Uri uri;    String AUTHORITY="content://com.njue.myProvider/myProvider_table_name";    ContentResolver cr;    EditText input;    Button insert;    TextView show;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     input=(EditText)findViewById(R.id.input);     insert=(Button)findViewById(R.id.insert);     show=(TextView)findViewById(R.id.show);     uri=uri.parse(AUTHORITY);     cr=this.getContentResolver();     insert.setOnClickListener(new Button.OnClickListener(){        @Override       public void onClick(View v) {         // TODO Auto-generated method stub          ContentValues values=new ContentValues();           values.put("name", input.getText().toString());           cr.insert(uri, values);           Cursor c=cr.query(uri, null, null, null, null);           show.setText("");           c.moveToFirst();           while(c.moveToNext()){            show.append(c.getString(1)+"/r/n");           }           input.setText("");       }});        } } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁远县| 周口市| 连平县| 新干县| 康乐县| 新蔡县| 伊宁县| 古蔺县| 唐山市| 遂昌县| 应城市| 遂宁市| 酒泉市| 武陟县| 平定县| 马鞍山市| 永修县| 宿松县| 丰台区| 淳安县| 丽水市| 镇安县| 阿拉善左旗| 常德市| 那坡县| 昔阳县| 龙岩市| 太谷县| 佛教| 丰原市| 黄浦区| 晋江市| 寿宁县| 绿春县| 阿勒泰市| 镇巴县| 辽阳市| 黔南| 延边| 淮阳县| 沅陵县|