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を選択します.
二、連絡先を挿入する
連絡先を挿入するには名前と電話番号を設定すればいいので、名前は名前ではなくtagに対応していることに注意してください.
三、連絡先の更新
連絡先を更新するには、元の名前と電話番号で更新する連絡先と一致するため、4つの属性を指定する必要があります.
四、連絡先の削除
連絡先を削除するには、同じ名前と電話番号で一致するため、deleteのwhereパラメータで指定する必要があります.次の例では、すべてのSIMカード内の連絡先を削除する例を示します.
上のコードセグメントは全部測ったので、安心して使えます.上記の例を成功させるには、SIMカードに追加した連絡先に異なる名前や電話番号が必要で、同じ名前と電話番号があれば、問題になる可能性があるという点は、私は予想していませんでした.また、SIMカードはUディスクと同じように壊れやすいので、読み書き回数が多いと壊れてしまう可能性があります.
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ディスクと同じように壊れやすいので、読み書き回数が多いと壊れてしまう可能性があります.