android内容提供者:总是用0行获取游标

7lrncoxx  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(402)

我正在尝试从一个移动应用程序的表中获取数据,在另一个使用android的移动应用程序中 Content Provider . 我总是感到 0 作为游标值中的行总数(的值 cursor.getCount()0 )但是,表中有一些记录。有人能告诉我我在这里错过了什么吗。
这是与 query()ContentProvider 应用程序中的类。

public class ExampleContentProvider extends ContentProvider {
    static final String PROVIDER_NAME = "com.example.exampleApp";
    static final String URL = "content://"+ PROVIDER_NAME + "/table_name";
    static final Uri CONTENT_URI = Uri.parse(URL);

    private SQLiteDatabase db;
    static final String DATABASE_NAME = "ContentProviderDb";
    static final String CP_TABLE_NAME = "table_name";
    static final int DATABASE_VERSION = 1;
    static final String CREATE_DB_TABLE =
           " CREATE TABLE " + CP_TABLE_NAME +
                   " (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                   " column1 TEXT NOT NULL);";

    @Override
    public Cursor query(Uri uri, String[] projection,
                        String selection,String[] selectionArgs, String sortOrder) {
        Cursor  c = db.query(CP_TABLE_NAME,null,null,null,null,null,null);
        return c;
    }
}

androidmanifest.xml文件(权限授予)

<provider
android:name=".ExampleContentProvider"
android:authorities="com.example.exampleApp"
android:exported="true"
android:grantUriPermissions="true"
 />

这是我的另一个应用程序的代码,我在其中使用 ContentResolver ```
Uri contentUri = Uri.parse("content://com.example.exampleApp/table_name");
ContentProviderClient contentProviderClient = this.context.getContentResolver().acquireContentProviderClient(contentUri);
ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = null;
try {
cursor = contentProviderClient.query(contentUri , null, null, null, null);
} catch (RemoteException e) {
e.printStackTrace();
}
if(cursor!=null && cursor.getCount()>0) {
cursor.moveToFirst();
// Loop in the cursor to get each row.
do {
// Get column 1 value.
int column1Index = cursor.getColumnIndex("column1");
String column1Value = cursor.getString(column1Index);
} while (cursor.moveToNext());
}

我使用null作为投影,所以应该返回所有列。
应用程序的androidmanifest.xml权限

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题