ContentProvider+ContentResolver实现应用程序内的数据共享

来源:互联网 发布:adobe muse cc 知乎 编辑:程序博客网 时间:2024/06/05 07:41

新建一个应用程序

<1>新建一个内容提供者类>
public class MyProvider extends ContentProvider{    private SQLiteDatabase sqLiteDatabase;    @Override    public boolean onCreate() {        Log.i("test","onCreate");        return false;    }    @Nullable    @Override    public Cursor query(@NonNull Uri uri, @Nullable String[] strings, @Nullable String s, @Nullable String[] strings1, @Nullable String s1) {        Log.i("test","query");        DBHelper dbHelper=new DBHelper(getContext(),"jiaokaobaodian.db",null,3);        sqLiteDatabase = dbHelper.getReadableDatabase();        return sqLiteDatabase.rawQuery("select * from jiaokaobaodian",null);    }    @Nullable    @Override    public String getType(@NonNull Uri uri) {        Log.i("test","getType");        return null;    }    @Nullable    @Override    public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) {        Log.i("test","insert");        return null;    }    @Override    public int delete(@NonNull Uri uri, @Nullable String s, @Nullable String[] strings) {        Log.i("test","delete");        return 0;    }    @Override    public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) {        Log.i("test","update");        return 0;    }}
<二>配置
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.zking.y2_android16_sqlite">    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher"        android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"        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.zking.y2_android16_sqlite.MY"        android:name="com.zking.provider.MyProvider"        android:exported="true"        android:enabled="true"        ></provider>    </application></manifest>
<三>再新建一个程序,得到内容的访问者

public class MainActivity extends AppCompatActivity {    private ContentResolver contentResolver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //得到内容访问者        contentResolver = getContentResolver();    }    public void query(View view){        //查询`        Uri uri=Uri.parse("content://com.zking.y2_android16_sqlite.MY");        Cursor cursor=contentResolver.query(uri,null,null,null,null);        while(cursor.moveToNext()){            int uid=cursor.getInt(cursor.getColumnIndex("uid"));            Log.i("test",""+uid);        }    }}




阅读全文
0 0