私のアプリでカスタムコンテンツプロバイダを開発しています。また、カスタムコンテンツプロバイダからリストを取得する際には、直面しています。詳細は、私のカスタムコンテンツプロバイダはテーブルを含んでいます。私はちょうどこのテーブルのすべてのオブジェクトを取得したい。しかし、それは動作しません。これは私のコードです、どうか私は間違っていることを教えてください?Androidカスタムコンテンツプロバイダ
public void onAdd(View v) {
String name = edtname.getText().toString();
Uri uri = Uri.parse("content://homework.iuh.hh.customcontentprovider.AccountProvider/accounts");
ContentValues values = new ContentValues();
values.put("NAME", name);
getContentResolver().insert(uri, values);
}
public void getList(View v) {
Uri uri = Uri.parse("content://homework.iuh.hh.customcontentprovider.AccountProvider/accounts");
Cursor c = getContentResolver().query(uri,null,null,null,null);
c.moveToFirst();
String res= "";
while(!c.isAfterLast())
{
res += c.getString(0);
c.moveToNext();
}
c.close();
Log.i(TAG,res);
And it is query method in content provider
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
Log.i(TAG,"query()");
Cursor c = getContext().getContentResolver().query(uri,projection,selection,selectionArgs,sortOrder);
c.setNotificationUri(getContext().getContentResolver(),uri);
return c;
}
メソッドonAdd()では、正常に動作します。しかし、getListメソッドでは、それはログを表示する、クエリ関数は非常に時間と呼ばれます。そして、メッセージ E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! 05-21 11:07:43.661 5876-5876/? E/AndroidRuntime: Error reporting crash android.os.TransactionTooLargeException