Android携帯電話の連絡先を読み取る

3621 ワード

03_携帯電話の連絡先を読み取る_40
authorities:当局
1、開発環境data/data/ディレクトリ下com.android.providers.contacts/databases/左contacts 2にエクスポート.db
2、ツールでデータベースを開く関心3枚の表:raw_contacts、data、mimetypes
3、連絡先SelectContactを読み取る新しいプロジェクトを作成する
4、すべての連絡先を得る方法getContactInfos()を作成する.テーブルのパス
 
List> data = new ArrayList>();
ContentResolver resolver = getContentResolver();
      Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
      Uri datauri = Uri.parse("content://com.android.contacts/data");
 
5、クエリーraw_contactテーブル連絡先idを取る
 
 
 Cursor cursor =resolver.query(uri, new String[] { "contact_id"},
            null, null, null);
6、連絡先のIDを得る
 
 while (cursor.moveToNext()) {
         String id = cursor.getString(0);
         System.out.println(「連絡先のidは:」+id);
   }
 
 
7、調査表data連絡先の名前と電話番号
 Map map = new HashMap();
//クエリーdataテーブル現在の連絡先の名前と電話番号new String[]{"data 1","mimetype"}データを取り出す.
            Cursor dataCursor = resolver.query(datauri, new String[]{"data1","mimetype"},
                  "raw_contact_id=?", new String[] { id }, null);
 
 
 
8、mapセットにデータを追加する
 
 
   String data1 =dataCursor.getString(0);
   String mimetype =dataCursor.getString(1);
 
               if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
                  System.out.println(「電話:」+data 1);
                  map.put("phone", data1);
               } else if ("vnd.android.cursor.item/name".equals(mimetype)) {
                  System.out.println(「名前:」+data 1);
                  map.put("name", data1);
 
               }
 
 
 
9、連絡先を読み取るには権限が必要
  
private List<Map<String, String>> getContactInfo() {

		//        
		List<Map<String, String>> list = new ArrayList<Map<String, String>>();

		//          
		ContentResolver resolver = getContentResolver();
		// raw_contacts uri
		Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
		Uri uriData = Uri.parse("content://com.android.contacts/data");

		Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
				null, null, null);

		while (cursor.moveToNext()) {
			String contact_id = cursor.getString(0);

			if (contact_id != null) {
				//          
				Map<String, String> map = new HashMap<String, String>();

				Cursor dataCursor = resolver.query(uriData, new String[] {
						"data1", "mimetype" }, "contact_id=?",
						new String[] { contact_id }, null);

				while (dataCursor.moveToNext()) {
					String data1 = dataCursor.getString(0);
					String mimetype = dataCursor.getString(1);
					System.out.println("data1==" + data1 + "==mimetype=="
							+ mimetype);

					if ("vnd.android.cursor.item/name".equals(mimetype)) {
						//       
						map.put("name", data1);
					} else if ("vnd.android.cursor.item/phone_v2"
							.equals(mimetype)) {
						//         
						map.put("phone", data1);
					}

				}

				list.add(map);
				dataCursor.close();

			}

		}

		cursor.close();
		return list;
	}