ContentPrivider内容提供者
来源:互联网 发布:html加载完成后执行js 编辑:程序博客网 时间:2024/06/16 06:49
package com.user.android2_lesson05_contentprovider;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {// 内容提供者是Android系统中专门为应用程序之间的数据通讯开发的// 正常来说应用程序之间是不允许数据通信的,// 但是内容提供者的作用就是让别的应用程序访问我们的数据库// 想要学习内容提供者需要两个应用程序,一个作为内容提供者,一个作为内容访问者// 1.创建一个数据库帮助类,用于数据的存储和访问,// 2.自定义一个内容提供者---创建一个类继承自contentProvider// 3.在清单文件中进行注册,表明本APP开启了一个内容提供者// 甲方:1.创建数据库 2.创建一个内容提供者,并实现对应的增删改查方法// 乙方:1.创建一个内容接收者 2.通过内容接收者,调用指定的APP的增删改查方法 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}创建一个Helperpackage com.user.android2_lesson05_contentprovider;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/** * Created by user on 2016/7/8. */public class DBHelper extends SQLiteOpenHelper{ public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); }// @Override public void onCreate(SQLiteDatabase sqLiteDatabase) {// 在这里进行创建表的操作 String sql = "CREATE TABLE student(sid int,name text,sex text ,age int );"; sqLiteDatabase.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { }}创建一个StudentPrivider继承ContentPrividerpackage com.user.android2_lesson05_contentprovider;import android.content.ContentProvider;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;import android.support.annotation.Nullable;/** * Created by user on 2016/7/8. */// 这里是对其它APP如何访问本APP的数据处理public class StudentPrivider extends ContentProvider {// 1.声明两个属性 用来存储操作的对象 private DBHelper helper; private SQLiteDatabase db; @Override public boolean onCreate() { helper = new DBHelper(getContext(),"student.db",null,1); db = helper.getReadableDatabase(); return true; } @Nullable @Override public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) { return null; } @Nullable @Override public String getType(Uri uri) { return null; } @Nullable @Override public Uri insert(Uri uri, ContentValues contentValues) {// 如果别的应用调用了添加数据的数据提供者接口,会调用这个方法// 这里是对调用请求的处理// 这里讲调用者提供的数据插入到student表中 db.insert("student",null,contentValues); return uri; } @Override public int delete(Uri uri, String s, String[] strings) { return 0; } @Override public int update(Uri uri, ContentValues contentValues, String s, String[] strings) { return 0; }}这里注意Manifest的修改<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.user.android2_lesson05_contentprovider"> <uses-permission android:name="android.permission.READ_CONTACTS"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <provider android:authorities = "com.user.student" android:name = ".StudentPrivider" android:exported = "true" /> </application></manifest>到这里内容提供者写完。
内容请求者
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.user.android2_lesson_05_testprovider.MainActivity"> <Button android:id="@+id/insertbutton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="插入数据"/></RelativeLayout>package com.user.android2_lesson_05_testprovider;import android.content.ContentResolver;import android.content.ContentValues;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private Button insertbutton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); insertbutton = (Button) findViewById(R.id.insertbutton); insertbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ContentResolver resolver = getContentResolver();// 创建我们需要插入的数据 ContentValues values = new ContentValues(); values.put("sid",1); values.put("name","孙连莹"); values.put("sex","女"); values.put("age",555);// 使用内容处理者进行数据的插入 resolver.insert(Uri.parse("content://com.user.student"),values); Toast.makeText(getApplicationContext(),"添加成功",Toast.LENGTH_SHORT).show(); } }); }}
这样实现了请求者和提供者之间的通讯
1 0
- ContentPrivider内容提供者
- ContentPrivider
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- 内容提供者
- poj 1363
- C++11并发编程实战
- matlab在图片上画标记然后整幅保存的方法
- 用两个遍历建树——树的遍历、玩转二叉树
- Repeater控件绑定及分页
- ContentPrivider内容提供者
- Linux系统调用--getrlimit()与setrlimit()函数详解
- Linux(CentOS)挂载U盘、移动硬盘以及文件拷贝、备份
- python学习——函数式编程
- java 消息机制 ActiveMQ入门实例
- ajax瀑布流加载技术
- 决策树算法(一)——一些重要的数学概念
- Hadoop学习笔记:(一)WordCount运行
- 强连通分量基础题