0

プロバイダーCallからa を削除する次のコードがあります。CallLog.Calls

            String strNumber= "myPhoneNumber"

            String queryString= "NUMBER='" + strNumber + "'";

            Log.v("Number", queryString); 

            int i=context.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null); 
            if(i<1) 

            {  
               // do my stuff
            } 

このコードは Android 2.2 では機能しますが、Android 2.3.3 では機能しません。

LogCat にエラーはありません。

4

2 に答える 2

1

クエリを作成するときは、SDK によって提供されるコントラクト クラス (状況によってはCallLog.Calls ) を使用する必要があります。

コントラクト クラスは、オブジェクト モデルをデータベース内の対応するデータ名にマップするためのものです。Android チームがデータベース内の列名を更新する必要がある場合、コントラクト クラスも更新するため、開発者が変更する必要はありません。

次に、クエリ文字列を次のように変更してみてください。

String queryString = CallLog.Calls.NUMBER + "='" + strNumber + "'";

注: 一重引用符が必要です。

また、番号がデータベース番号と正確に一致していることを確認してください。

( +33678541236 != 0678541236 )

正しい行を確実に削除するには、次の操作を実行できます。

Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, CallLog.Calls.NUMBER + " = ? ", strNumber , "");
int idOfRowToDelete = cursor.getInt(cursor.getColumnIndex(CallLog.Calls._ID));
getContentResolver().delete(Uri.withAppendedPath(CallLog.Calls.CONTENT_URI, String.valueOf(idOfRowToDelete)), "", null);

(試していませんが、小さな修正で動作するはずです)

于 2012-06-04T13:48:45.170 に答える
0
private void deleteNumber() {
            try {
                String strNumberOne[] = { "00577698160" };
                Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, CallLog.Calls.NUMBER + " = ? ", strNumberOne, "");
                boolean bol = cursor.moveToFirst();
                if (bol) {
                    do {
                        int idOfRowToDelete = cursor.getInt(cursor.getColumnIndex(CallLog.Calls._ID));
                        getContentResolver().delete(Uri.withAppendedPath(CallLog.Calls.CONTENT_URI, String.valueOf(idOfRowToDelete)), "", null);
                    } while (cursor.moveToNext());
                }
            } catch (Exception ex) {
                System.out.print("Exception here ");
            }
        }
于 2012-11-20T11:57:48.913 に答える