Android 自定义ContentProvider简单实例

Android 自定义ContentProvider简单实例,第1张

概述Android自定义ContentProvider简单实例Android允许我们定义自己的的ContentProvider对象来共享数据,练练手,简单来实现一下。

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,sortOrder);     return c;   }    @OverrIDe   public int update(Uri uri,ContentValues values,String[] selectionArgs) {     // Todo auto-generated method stub     sqliteDatabase db=dbHelper.getWritableDatabase();     int ID=db.update(DBManager.myProvIDer_table_name,values,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);           show.setText("");           c.movetoFirst();           while(c.movetoNext()){            show.append(c.getString(1)+"\r\n");           }           input.setText("");       }});        } } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

以上是内存溢出为你收集整理的Android 自定义ContentProvider简单实例全部内容,希望文章能够帮你解决Android 自定义ContentProvider简单实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存