ContactsContract返回此字符串内容://com.android.contacts/data/1而不是联系人列表中的电话号码

时间:2012-11-28 21:03:40

标签: java android contactscontract

我从Beginning Android™应用程序开发手册中复制代码示例。 该代码用于在用户点击按钮时根据我的应用程序上的电话号码显示联系人列表。代码工作正常,因为我评论// startActivity(i); on onActivityResult(int requestCode, int resultCode, Intent data) function我得到了以下字符串

  

内容://com.android.contacts/data/1

但我想从联系人列表中获取电话号码。为此,我使用以下代码。

public OnClickListener addContactButtonListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Log.v(TAG, "addContactButtonListener  ");
        Intent i = new Intent(android.content.Intent.ACTION_PICK);
        i.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
        startActivityForResult(i, 1);


    }
};

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.v(TAG, "onActivityResult");

    if (requestCode == 1) {
        Log.v(TAG, "onActivityResult > requestCode " + requestCode);

        if (resultCode == RESULT_OK) {
            Log.v(TAG, "onActivityResult > resultCode " + resultCode);
            Toast.makeText(this, data.getData().toString(),
                    Toast.LENGTH_SHORT).show();

            queryEditText.setText(data.getData().toString());
            Intent i = new Intent(android.content.Intent.ACTION_VIEW,
                    Uri.parse(data.getData().toString()));

            Log.v(TAG, "onActivityResult > startActivity " + i.toString());

            startActivity(i);
        }
    }
}

但在取消评论时startActivity(i);我收到了以下错误

11-09 23:09:37.913: V/MyApp_Main(4002): onActivityResult > startActivity Intent { act=android.intent.action.VIEW dat=content://com.android.contacts/data/1 }
11-09 23:09:37.923: D/AndroidRuntime(4002): Shutting down VM
11-09 23:09:37.923: W/dalvikvm(4002): threadid=1: thread exiting with uncaught exception (group=0x40015560)
11-09 23:09:37.933: E/AndroidRuntime(4002): FATAL EXCEPTION: main
11-09 23:09:37.933: E/AndroidRuntime(4002): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.contacts/data/1 flg=0x1 (has extras) }} to activity {com.example.MyApp/com.example.MyApp.MyApp_Main}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=content://com.android.contacts/data/1 }
11-09 23:09:37.933: E/AndroidRuntime(4002):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2532)
11-09 23:09:37.933: E/AndroidRuntime(4002):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:2574)
11-09 23:09:37.933: E/AndroidRuntime(4002):     at android.app.ActivityThread.access$2000(ActivityThread.java:117)
11-09 23:09:37.933: E/AndroidRuntime(4002):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:961)

有人能解释一下这里发生了什么吗?

0 个答案:

没有答案