【已解决】 content provider跨进程通信cursor
URI路径也对,provider也注册了,在同一个APK可以获取到contentprovider的数据,但是跨进程就不行了,哪个大神帮忙解答一下,谢谢
package com.example.testprovider;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//点击获取
public void getRemoteUser(View view){
ContentResolver contentResolver = getContentResolver();
Uri uri = Uri.parse("content://com.example.contentprovider");
Cursor cursor = contentResolver.query(uri, null, null, null, null);
Log.d(TAG,"uri == "+uri+"\n"+cursor);
String[] columnNames = cursor.getColumnNames();
for (String columnName : columnNames) {
Log.d(TAG,"columnName -- >"+columnName);
}
while (cursor.moveToNext()) {
Log.d(TAG,"==========================================================");
for (String columnName : columnNames) {
String value = cursor.getString(cursor.getColumnIndex(columnName));
Log.d(TAG,columnName + " ---- " + value);
}Log.d(TAG,"==========================================================");
}
cursor.close();
}
}

你看这里,编译器都给你说出来了,没有相应的contentProvider,你检查一下的URl是否写错了,如果是自己写的contentProvider,检查下mainfest.xml里面是否注册了这个contentprovider,并且exported属性为true
你这里空指针,你根本没有拿到值,这时候直接读值,肯定报错
内容提供者本来就是进程的数据通讯,你这里错误是因为空指针。