0

ユーザーの呼び出しのリストを取得しようとしていますが、「不正な引数の例外: 列 '_id' が存在しません」というメッセージが表示されます。

call Log テーブルを作成していないか、何もしていないため、これは非常に奇妙です。クエリを実行しようとしているだけです。これが私のコードです:

String[] strFields = {
            android.provider.CallLog.Calls.NUMBER, 
            android.provider.CallLog.Calls.TYPE,
            android.provider.CallLog.Calls.DATE,
            android.provider.CallLog.Calls.DURATION
            };

String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 

callCursor = getContentResolver().query(
            android.provider.CallLog.Calls.CONTENT_URI,
            strFields,
            null,
            null,
            strOrder
            );



    // THE DESIRED COLUMNS TO BE BOUND
  String[] columns = new String[] { android.provider.CallLog.Calls.DATE, 
                                    android.provider.CallLog.Calls.DURATION,
                                    android.provider.CallLog.Calls.TYPE,
                                    android.provider.CallLog.Calls.NUMBER };

...そして、ListView/cursor アダプターの処理を行います。

このクエリで私が間違っていることはありますか? 通話履歴にアクセスするための代替ソリューションはありますか?

ありがとう。

4

1 に答える 1

3

CursorAdapter を使用している場合、callCursor には「_id」という名前の列を含める必要があります。そうしないと、アダプターは機能しません ( CursorAdapter )

この文字列を strFields 配列に追加する必要があります

android.provider.CallLog.Calls._ID

その後、 CursorAdapter は期待どおりに動作するはずです

于 2011-07-14T15:30:35.190 に答える