学习内容提供者第8节视频,为什么插入数据后监听不到数据的变化?
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ContentResolver contentResolver = getContentResolver();
    Uri uri = Uri.parse("content://com.example.contentprovider/user");
    contentResolver.registerContentObserver(uri, false, new ContentObserver(new Handler()) {
        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            Log.d(TAG, "用户数据发生变化.. " + selfChange);//此Log没有打出
            //获取新的内容
        }
    });
private void addUser() {
    ContentResolver contentResolver = getContentResolver();
    Uri uri = Uri.parse("content://com.example.contentprovider/user");
    ContentValues values = new ContentValues();
    values.put(Constants.FIELD_USER_NAME, "BillGates");
    values.put(Constants.FIELD_PASSWORD, "123456");
    values.put(Constants.FIELD_SEX, "male");
    values.put(Constants.FIELD_AGE, "59");
    contentResolver.insert(uri, values);
}
写的addUser成功执行,数据也成功插入,但是上面的Log.d(TAG, "用户数据发生变化.. " + selfChange);没有出现
Log只出现一条Log.d(TAG, "insert user result--> " + id);
UserProvider里的insert()
public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
    int result = sUriMatcher.match(uri);
    if (result == USER_MATCH_CODE) {
        SQLiteDatabase db = mUserDatabaseHelper.getWritableDatabase();
        long id = db.insert(Constants.TABLE_NAME, null, values);
        Uri resultUri = Uri.parse("content://com.example.contentprovider/user" + id);//拼接
        Log.d(TAG, "insert user result--> " + id);//此Log可以成功打出
        //数据已经变化通知其他地方(谁监听就通知谁)
        getContext().getContentResolver().notifyChange(resultUri, null);
        return resultUri;
    } else {
        throw new IllegalArgumentException("参数错误");
    }
}
Manifest注册
<provider
    android:name=".provider.UserProvider"
    android:authorities="com.example.contentprovider;sobUserProvider"
    android:exported="true" />
Uri resultUri = Uri.parse("content://com.example.contentprovider/user/" + id);//斜杠拼接
Uri resultUri = Uri.parse("content://com.example.contentprovider/user" + id);//拼接
这里user跟id间不需要一个
contentResolver.registerContentObserver(uri, false, new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Log.d(TAG, "用户数据发生变化.. " + selfChange);//此Log没有打出 //获取新的内容 } });视频里明明有说第二个参数是有什么用的。