首页 > 编程语言 >android 应用程序数据共享ContentR…

android 应用程序数据共享ContentR…

时间:2023-07-31 22:32:00浏览次数:39  
标签:String NAME db 数据共享 TABLE android null public ContentR

1.实现一个ContentProvider.
public class DataProviders extends ContentProvider {
  private static final String DATABASE_NAME = "UIDB";
  private static final int DATABASE_VERSION = 1;
  private static final String TABLE_NAME = "UITable";   public static String ID = "_id";
     public static String NAME = "display_name";
    
  private static class DatabaseHelper extends SQLiteOpenHelper {
   DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
   } @Override
   public void onCreate(SQLiteDatabase db) {
    Log.d("tag", "onCreate");
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + ID
      + " INTEGER PRIMARY KEY AUTOINCREMENT," + NAME + " TEXT" + ");");
   } @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    Log.d("tag", "onUpgrade");
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
             }
  }// ---------------------------------------------------------------------------------
  private DatabaseHelper mOpenHelper;@Override
  public boolean onCreate() {
   mOpenHelper = new DatabaseHelper(getContext());
   return true;
  }@Override
  public Cursor query(Uri uri, String[] projection, String selection,
    String[] selectionArgs, String sortOrder) {
   SQLiteDatabase db = mOpenHelper.getReadableDatabase();
   
   Cursor c = db.query(TABLE_NAME, projection, selection, selectionArgs, null, null,
     null);
   return c;
  }@Override
  public String getType(Uri uri) {
   return null;
  }@Override
  public Uri insert(Uri uri, ContentValues initialValues) {
   Log.d("tag", "insert");
   SQLiteDatabase db = mOpenHelper.getReadableDatabase();
   db.insert(TABLE_NAME, null, initialValues);
   return uri;
  }@Override
  public int delete(Uri uri, String where, String[] whereArgs) {
   Log.d("tag", "delete");
   SQLiteDatabase db = mOpenHelper.getReadableDatabase();
   return db.delete(TABLE_NAME, where, whereArgs);
  }@Override
  public int update(Uri uri, ContentValues values, String where,
    String[] whereArgs) {
   Log.d("tag", "update");
   
   getContext().getContentResolver().notifyChange(OServerActivity.CONTENT_URI, null);
   
   SQLiteDatabase db = mOpenHelper.getReadableDatabase();
   return db.update(TABLE_NAME, values, where, whereArgs);
  }2.Androidmanifest.xml文件中声明 
<provider android:name=".DataProviders"    
              android:authorities="org.yihu.datachanage" />可定义provider权限


 3.定义 Uri 
4.在其它程序中访问
public class ShareDateActivity extends ListActivity {
  public static final Uri CONTENT_URI = Uri.parse("content://org.yihu.datachanage");
  @Override
  public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState); Cursor c = getContentResolver().query(CONTENT_URI, null, null,
     null, null); startManagingCursor(c);
 ListAdapter adapter = new SimpleCursorAdapter(this,
 android.R.layout.simple_list_item_2, c,
 new String[] { "_id", "display_name" },
 new int[] { android.R.id.text1, android.R.id.text2 });
 setListAdapter(adapter);
  }
 }

标签:String,NAME,db,数据共享,TABLE,android,null,public,ContentR
From: https://blog.51cto.com/u_3124497/6914308

相关文章

  • Android 使用【AIDL】调用外部服务
    在Android中有一种服务说是服务其实倒不如说是一个接口,这个接口名为:AndroidInterfaceDefinitionLanguage,这个接口可提供跨进程访问服务,英文缩写为:AIDL。此种服务的好处在于,多个应用程序之间建立共同的服务机制,通过AIDL在不同应用程序之间达到数据的共享和数据相互操作,下......
  • android学习之 如何在当前的Activi…
    当打开多个Activity(之前的没关闭)时,如何在当前的Activity退出程序呢?我们都知道最简单的是finish(),但这只是关闭当前的Activity,并不是退出整个程序。有人说用System.exit(1),我自己也试过用Process.killProcess(Process.myPid())。但都不理想,有时work,有时不起作用只是关闭当前的Acti......
  • android 自定义权限问题
    读懂Android(1):使用Android内部的DownloadProvider下载文件,并获取cache权限  --未审核  收藏Android内部提供了一个DownloadProvider,是一个非常完整的下载工具,提供了很好的外部接口可以被其他应用程序调用,来完成下载工作。同时也提供和很好的下载、通知、存储等机......
  • Android开发精华教程
    [下载]GoogleAndroid开发精华教程Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。本文汇总整理了时下关于GoogleAndroid技术教程的下载......
  • android listView控件学习之一
    androidlistView控件学习之一1.基本应用:1>res/layout/main.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"......
  • android程序调用另一个android应用…
    android程序调用另一个android应用程序请求:例子:    newComponentName("com.gwsoft.player.activity","com.gwsoft.player.activity.PlayerActivity");newIntent();newBundle();"resUrl",resurl);......
  • android画图-----shape的使用文档…
    在GradientDrawable1试图中终于把shape学会了,以前总是似懂非懂,现在终于把里面的东西搞清楚了,同时也挺佩服谷歌的用心,故意设置一些陷阱吧,不认真对待还真以为没有啥效果呢。setContentView(R.layout.shape_drawable_1)shape_drawable_1代码如下:<ScrollViewxmlns:android="htt......
  • 自定义Android组件之带图像的TextV…
    本文为新书《Android/OPhone开发完全讲义》的内容连载。《Android/OPhone开发完全讲义》一书将在近期出版,敬请关注。 Android系统支持的图像格式)的TextView组件。在编写代码之前,先看一下Android组件的配置代码。1.<TextViewandroid:id="@+id/textview1"android:layout_width......
  • Android permission 访问权限大全
    Androidpermission访问权限大全AndroidAndroidpermission0Commentsandroidmanifest.xml中声明相关权限请求,完整列表如下:android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问”properties”表在checkin数据库中,改值可以修改上传(Allowsread/writeaccess......
  • android学习之TransitionDrawable …
    Drawable的例子,体现出Drawable的强大功能。AndroidSDK中说明了Drawable主要的作用是:在XML中定义各种动画,然后把XML当作Drawable资源来读取,通过Drawable显示动画。下面举个使用TransitionDrawable的例子,创建一个Android工程,然后再这个工程的基础上修改,修改过程如下:1、去掉layout......