</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>
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);
}
}