1

誰かが私が次のことを達成するのを手伝ってくれますか?

前のアクティビティで「ACTION_PICK」を介してすでに取得された連絡先へのURIが与えられた場合、連絡先を呼び出すためにACTION_DIALインテントを起動したいと思います。

ただし、これを行う方法がわからない場合は、最初に連絡先に関連付けられているプラ​​イマリ番号を見つけるためにクエリを実行する必要がありますか、それとももっと簡単な方法がありますか?連絡先のURIを使用してACTION_DIALを起動するだけで、それ自体が何をすべきかがわかると期待していましたが、それは機能しません。

いつものようにあなたのアドバイスをいただければ幸いです。

PSこのコードはフローズンヨーグルト以降のものであるため、古いものではなく、ContactsContractを使用します。

ありがとう、

4

3 に答える 3

3

他の人の利益のために、ACTION_PICKインテントから取得した連絡先のURIを使用してACTION_DIAL/ACTION_CALLインテントを起動することは機能しません。無効なパラメータです。

そのため、いくつかのクエリを使用して、連絡先の電話番号を特定する必要がありました。また、「プライマリ」電話のみを探します。

タスクを実行するための私のコードは次のとおりです。おそらく、私はすでにURIを持っているので、IDを取得するために最初のクエリを実行する必要はありませんが、代替案をまだ見つけていません。知る :-) 、

// passing in String uri - obtained via contacts based ACTION_PICK 
        String contactId = null;
        Cursor contactCursor =  callingActivity.managedQuery(Uri.parse(uri), null, null, null, null); 
        if (contactCursor.moveToFirst())
        {
            contactId =
                contactCursor.getString(contactCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
        } 

        Cursor c = callingActivity.managedQuery(Data.CONTENT_URI,
          new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
          Data.CONTACT_ID + "=?" + " AND "
                  + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE
                  + "' AND " + Phone.IS_PRIMARY + " != 0",
          new String[] {contactId}, null);


        if (c.moveToNext()) {
            result = c.getString(c.getColumnIndexOrThrow(Phone.NUMBER));
            if (DEBUG) Log.d(TAG, "GOT PHONE : "+c.getString(c.getColumnIndexOrThrow(Phone.NUMBER)) + ","
                    +c.getString(c.getColumnIndexOrThrow(Phone.LABEL)) + ","
                    +c.getString(c.getColumnIndexOrThrow(Phone.TYPE)));
        }

www.dbws.net

于 2011-01-23T22:02:38.780 に答える
2

それはあなたを助けます、

Intent myintent = new Intent(Intent.ACTION_CALL); 
            Log.v("phno",""+phNo);
           myintent.setData(Uri.parse("tel:" +phNo ));  
           myintent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
           startActivity(myintent);
于 2011-01-20T14:24:59.030 に答える
0

追加することを忘れないでください

<uses-permission android:name="android.permission.CALL_PHONE" />

マニフェストファイル

于 2013-03-13T09:54:48.750 に答える