我从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)
有人能解释一下这里发生了什么吗?