2017-01-17 3 views
1

これは、複数の連絡先を取り出し、その連絡先をバンドルに格納するコードです。Uriの値をバンドル値に渡す方法

Intent phonebookIntent = new Intent("intent.action.INTERACTION_TOPMENU"); 
    phonebookIntent.putExtra("additional", "phone-multi"); 
    phonebookIntent.putExtra("maxRecipientCount", MAX_PICK_CONTACT); 
    phonebookIntent.putExtra("FromMMS", true); 
    startActivityForResult(phonebookIntent, REQUEST_CODE_PICK_CONTACT); 

そして問題は、私はウリのデータを参照する他のクラスでそれを利用することができるように、私はウリのデータを望んで選択したデータ

if (requestCode == REQUEST_CODE_PICK_CONTACT) { 

      Uri contractData = data.getData(); 

      Bundle contantData = data.getExtras(); 
      String result= contantData.getString("result"); 
      ArrayList<String> contacts = contantData.getStringArrayList("result"); 
      ContactRetriever cr = new ContactRetriever(getApplicationContext(), contacts); 
      Person p = cr.getPerson(); 

を取得するために使用される以下のコード。バンドル値をUriデータにどのように渡すことができますか。 any1助けてください。

Iが "連絡先データ" としてURIデータを呼び出してい

他のクラス

private String getNumber() { 
    String ret = null; 


    Cursor cId = cr.query(contractData, new String[]{ContactsContract.Contacts._ID}, null, null, null); 

    if (cId.moveToFirst()){ 
     id = cId.getString(cId.getColumnIndex(ContactsContract.Contacts._ID)); 
     Log.i(TAG + " IDs: ", id); 
    } 
    cId.close(); 

    Cursor cNum = cr.query(contractData, null, null, null, null); 

    if (cNum.moveToNext()){ 
     ret = cNum.getString(cNum.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     Log.i(ret, TAG + " NUMBERS: "); 
    } 
    return ret; 
} 

private String getName() { 
    String ret = null; 

    Cursor c = cr.query(contractData, null, null, null, null); 
    if (c.moveToFirst()) 
     ret = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

    c.close(); 
    Log.i(TAG + "NAMES: ", ret); 
    return ret; 
} 

}

カーソルCID = cr.query(contractData、新しいString [] {としてContactsContracts._ID}、null、null、null);

カーソルcNum = cr.query(contractData、null、null、null、null);

カーソルc = cr.query(contractData、null、null、null、null);

答えて

0

toString関数を使用して文字列として渡してから、キャストすることができます。だから、

、URI

phonebookIntent.putExtra("uri", uriData.toString()); 

の一部としてそれを送信すると、それをリードバックします。

Uri uriData = Uri.parse(extras.getString"uri")); 
+0

エラーを。 toString() – Meghana

+0

およびUri uriData = Uri.parse(extras.getString "uri"));エクストラは値を得られないので余計にエラーになります。 – Meghana

+0

anyi1 help – Meghana

2

あなたは、単にintent.putExtraを(合格傾けるようウリはparceleable実装)の代わりに、あなたはそれをこの方法を使用する必要があります。

phonebookIntent.putParceleableExtra("uri", your_uri_object); 

はそれをリードバック:uriDataで

Uri uri = getIntent().getParcelableExtra("uri"); 
関連する問題