ContentProvide 应用之间的通信

 

</pre></p><p></p><p><img alt="" src="https://img-blog.csdn.net/20151009162807419?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" /></p><p>清单文件配置 exported 设置true 被的应用才可以访问 </p><p><pre class="html" name="code"><provider  android:name="com.example.contentprovide.MyContent" android:exported="true"   android:authorities="com.example.contentprovide.cp"></provider>


新建自定义内容提供者 extend ContentProvide

package com.example.contentprovide;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;

public class MyContent extends ContentProvider {
	public static final Uri uri=Uri.parse("content://com.example.contentprovide.cp");

	private SQLiteDatabase database;

	@Override
	public int delete(Uri arg0, String arg1, String[] arg2) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public String getType(Uri arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Uri insert(Uri arg0, ContentValues arg1) {
		database.insert("car", null, arg1);
//		database.close();
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean onCreate() {
		// Context.MODE_PRIVATE 让数据库只能给当前类调用
		 database=getContext().openOrCreateDatabase("mycc.db", Context.MODE_PRIVATE, null);
		 database.execSQL("create table car(_id INTEGER PRIMARY KEY  AUTOINCREMENT,name TEXT NOT NULL)");
		
		return true;
	}

	@Override
	public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,
			String arg4) {
		Cursor c=database.query("car", null, null, null, null, null, null);
		//忘记写返回  会 得到cursor的时候--》Nullexception
		return c;
	}

	@Override
	public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
		// TODO Auto-generated method stub
		return 0;
	}

}

package com.example.contentprovide;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	Button btn=	(Button) this.findViewById(R.id.btn);
	btn.setOnClickListener(new OnClickListener() {
		
		@Override
		public void onClick(View arg0) {
			for(int i=0;i<5;i++){
				ContentValues c=new ContentValues();
				c.put("name", "mantou"+i);
				
				getContentResolver().insert(MyContent.uri, c);
			}
			
			
		}
	});

		
	}

	

}
提供者准备完毕,在外新建项目测试 拿数据。

package com.example.textprovide;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	//访问contentprovide的URI 
	Uri uri=Uri.parse("content://com.example.contentprovide.cp");

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView text=(TextView) this.findViewById(R.id.result);
		
		Cursor cursor=getContentResolver().query(uri, null, null, null, null);
		//不把cursor移动到第一个位子 下面会角标会越界异常
		cursor.moveToFirst();

		StringBuilder stringbuider=new StringBuilder();
		for(int i=0; i<cursor.getCount();i++){
			String str=cursor.getString(cursor.getColumnIndex("name"));
//			Toast.makeText(this, cursor.getCount(), 1000).show();
			stringbuider.append(str+" ");
			//不移动下去 会出现只查找当前数据
			cursor.moveToNext();
			
			
		}
		text.setText(stringbuider);
	}

	

}

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值