全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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, 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(""); 
      }}); 
     
  } 
} 

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


# Android  # 自定义ContentProvider  # ContentProvider自定义  # 实例讲解Android中ContentProvider组件的使用方法  # Android应用中使用ContentProvider扫描本地图片并显示  # Android中自定义ContentProvider实例  # Android开发之ContentProvider的使用详解  # Android数据持久化之ContentProvider机制详解  # Android ContentProvider的实现及简单实例代码  # Android开发教程之ContentProvider数据存储  # android基础总结篇之八:创建及调用自己的ContentProvider  # Android学习笔记之ContentProvider和Uri详解  # 详解Android ContentProvider的基本原理和使用  # 自定义  # 创建一个  # 自己的  # 都是  # 要有  # 我们可以  # 希望能  # 很简单  # 可以使用  # 它在  # 谢谢大家  # 来实现  # 方法来  # 要使  # 配置文件  # 完成了  # 窗口中  # TODO  # constructor  # generated 


相关文章: 如何通过免费商城建站系统源码自定义网站主题与功能?  音乐网站服务器如何优化API响应速度?  建站之星安装提示数据库无法连接如何解决?  XML的“混合内容”是什么 怎么用DTD或XSD定义  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何解决ASP生成WAP建站中文乱码问题?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何规划企业建站流程的关键步骤?  网站按钮制作软件,如何实现网页中按钮的自动点击?  建站ABC备案流程中有哪些关键注意事项?  如何通过宝塔面板实现本地网站访问?  焦点电影公司作品,电影焦点结局是什么?  高防服务器租用指南:配置选择与快速部署攻略  安云自助建站系统如何快速提升SEO排名?  高防服务器租用首荐平台,企业级优惠套餐快速部署  C++如何使用std::optional?(处理可选值)  MySQL查询结果复制到新表的方法(更新、插入)  Python文件管理规范_工程实践说明【指导】  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何选择靠谱的建站公司加盟品牌?  建站之星价格显示格式升级,你的预算足够吗?  建站主机SSH密钥生成步骤及常见问题解答?  如何彻底卸载建站之星软件?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  建站之星后台密码遗忘如何找回?  购物网站制作公司有哪些,哪个购物网站比较好?  制作宣传网站的软件,小红书可以宣传网站吗?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  如何快速搭建响应式可视化网站?  网站app免费制作软件,能免费看各大网站视频的手机app?  如何使用Golang安装API文档生成工具_快速生成接口文档  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  宝塔新建站点为何无法访问?如何排查?  建站主机默认首页配置指南:核心功能与访问路径优化  如何在云服务器上快速搭建个人网站?  怎么将XML数据可视化 D3.js加载XML  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  海南网站制作公司有哪些,海口网是哪家的?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  如何在阿里云域名上完成建站全流程?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  内网网站制作软件,内网的网站如何发布到外网?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  实例解析angularjs的filter过滤器  如何在Windows 2008云服务器安全搭建网站?  如何用狗爹虚拟主机快速搭建网站?  建站之星微信建站一键生成小程序+多端营销系统  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  重庆市网站制作公司,重庆招聘网站哪个好?  python的本地网站制作,如何创建本地站点? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。