我正在尝试从一个移动应用程序的表中获取数据,在另一个使用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权限
暂无答案!
目前还没有任何答案,快来回答吧!