
如何使用 startActivityForResult 的详细说明。
5星
- 浏览量: 0
- 大小:None
- 文件类型:RAR
简介:
在Android应用开发中,`startActivityForResult`方法至关重要,它负责启动一个新的Activity,并期望接收返回结果。该方法广泛应用于不同Activity间的通信,例如获取用户的选择或处理权限申请等。具体而言,我们经常会看到其在实践中的运用,比如通过`startActivityForResult`来检索设备的通讯录中的电话号码信息。接下来,我们将对`startActivityForResult`的使用方式进行更为详细的阐述,并重点探讨其在获取通讯录信息方面的具体应用。
让我们深入探讨`startActivityForResult`的底层语法结构:
```java
Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
```
该变量 `REQUEST_CODE` 是一种用户自定义的整数标识,其主要作用在于明确区分来自不同请求的数据。当第二个活动执行完毕并向主活动返回结果时,系统利用这个代码值来识别具体哪个请求对应的返回值。
在第二个活动中,例如我们当前要处理通讯录的活动,通常会进行一系列操作,譬如读取联系人信息。为了完成这些任务,需要借助`ContentResolver`和`ContactsContract`这两个类。下面展示了查询通讯录并从中选取一个电话号码的具体示例:
```java
Uri contactsUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
Cursor cursor = getContentResolver().query(contactsUri, null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
可以在这里处理获取到的电话号码
}
cursor.close();
}
```
操作执行完毕之后,以便将返回结果传递给发起请求的程序,我们需要调用`setResult`方法。
```java
Intent resultIntent = new Intent();
resultIntent.putExtra(selected_number, selectedNumber);
setResult(RESULT_OK, resultIntent);
finish();
```
其中,`RESULT_OK`表明操作已成功完成,同时也可以采用`RESULT_CANCELED`来指示操作被取消。`resultIntent`则是一个包含了返回信息的Intent。
现在,我们重新审视最初的Activity,其中关键在于重构`onActivityResult`方法,以便能够接收并处理返回的数据结果。
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
String selectedNumber = data.getStringExtra(selected_number);
在这里处理获取到的电话号码
}
}
```
通过对请求代码、结果代码以及返回的数据Intent的仔细核查,我们着重验证它们是否完全符合我们所设定的预期标准。
总结而言,`startActivityForResult`是Android平台中一种关键的交互方式,它允许启动一个活动并等待其返回的结果。例如,在需要获取通讯录信息的情况下,可以启动一个新的活动来展示通讯录列表,从而为用户提供选择联系人的功能。随后,选定的电话号码会被通过`setResult`传递回启动该活动的原始活动。在原始活动的`onActivityResult`方法中,开发者可以成功地检索到返回的电话号码,并进而进行进一步的操作。 这种方法极大地简化了不同活动之间的数据交换过程,并确保了其有序性。
全部评论 (0)


