android操作simカード連絡先情報


SIMのproviderはIccProviderです.Providerである以上、Contactを操作するproviderと似ていますが、わずかな違いがあります.
IcccProviderのUriはcontent://icc/andあ、このUriでSIMを操作できます.もちろん、androidのUriオブジェクトに変換する必要があります.AndroidではSIMカード操作のサポートが簡単で、具体的なクエリー、挿入、更新、削除操作は以下のコードセグメントのようなものです.
一、連絡先を問い合わせる
クエリーでは、取得連絡先、すなわちquery()関数の後のいくつかのパラメータがnull(他の値は機能しません)であることのみがサポートされます.また、類似もサポートされていません.content://icc/and/0を選択します.
public void SimQuery(Activity activity) {
    Uri uri = Uri.parse("content://icc/adn");
    Cursor cursor = activity.getContentResolver().query(uri, null, null,
            null, null);
    Log.d("1023", ">>>>>>" + cursor.getCount());
    while (cursor.moveToNext()) {
        String id = cursor.getString(cursor.getColumnIndex(People._ID));
        String name = cursor.getString(cursor.getColumnIndex(People.NAME));
        String phoneNumber = cursor.getString(cursor
                .getColumnIndex(People.NUMBER));
        Log.d("1023", ">>>>>>" + "_id, " + id);
        Log.d("1023", ">>>>>>" + "name, " + name);
        Log.d("1023", ">>>>>>" + "phone number, " + phoneNumber);
    }
}

二、連絡先を挿入する
連絡先を挿入するには名前と電話番号を設定すればいいので、名前は名前ではなくtagに対応していることに注意してください.
public void SimInsert(Activity activity) {
    Uri uri = Uri.parse("content://icc/adn");
    ContentValues values = new ContentValues();
    values.put("tag", "Jones");
    values.put("number", "10086");
    Uri newSimContactUri = activity.getContentResolver()
            .insert(uri, values);
    Log.d("1023",
            ">>>>>>" + "new sim contact uri, "
                    + newSimContactUri.toString());
}

三、連絡先の更新
連絡先を更新するには、元の名前と電話番号で更新する連絡先と一致するため、4つの属性を指定する必要があります.
public void SimUpdate(Activity activity) {
    Uri uri = Uri.parse("content://icc/adn");
    ContentValues values = new ContentValues();
    values.put("tag", "Jones");
    values.put("number", "10086");
    values.put("newTag", "Fred");
    values.put("newNumber", "10000");
    activity.getContentResolver().update(uri, values, null, null);
}

四、連絡先の削除
連絡先を削除するには、同じ名前と電話番号で一致するため、deleteのwhereパラメータで指定する必要があります.次の例では、すべてのSIMカード内の連絡先を削除する例を示します.
public void SimDelete(Activity activity) {
    Uri uri = Uri.parse("content://icc/adn");
    Cursor cursor = activity.getContentResolver().query(uri, null, null,
            null, null);
    Log.d("1023", ">>>>>> " + cursor.getCount());
    while (cursor.moveToNext()) {
        String name = cursor.getString(cursor.getColumnIndex(People.NAME));
        String phoneNumber = cursor.getString(cursor
                .getColumnIndex(People.NUMBER));
        String where = "tag='" + name + "'";
        where += " AND number='" + phoneNumber + "'";
        activity.getContentResolver().delete(uri, where, null);
    }
}

上のコードセグメントは全部測ったので、安心して使えます.上記の例を成功させるには、SIMカードに追加した連絡先に異なる名前や電話番号が必要で、同じ名前と電話番号があれば、問題になる可能性があるという点は、私は予想していませんでした.また、SIMカードはUディスクと同じように壊れやすいので、読み書き回数が多いと壊れてしまう可能性があります.