Activity之间的交互

编程入门 行业动态 更新时间:2024-10-10 13:13:54

<a href=https://www.elefans.com/category/jswz/34/1768280.html style=Activity之间的交互"/>

Activity之间的交互

一、不同App直接Activity的调用

1、当不同的App直接进行调用Intent的声明需要隐式声明
2、在调用之前需要检查是否有App能够接收否则会引起Crash

PackageManager packageManager = getPackageManager();
List activities = packageManager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);
boolean isIntentSafe = activities.size() > 0;

3、当有多个满足条件的Intent出现时,回跳出列表供用户选择。若用户选择后则一直使用那个Intent进行接收
4、若App需要每次用户都进行选择(如:分享)则需要创建IntentChooser来建立
Intent chooser = Intent.createChooser(intent, title);

二、获取调用Activity的返回结果

1、当从Activity返回结果是会回调onActivityResult()方法。想要获取相应数据首先要检查RequestCode
再检查ResultCode,再获取数据
2、如何读取联系人

private void pickContact() {Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts");pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbersstartActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == PICK_CONTACT_REQUEST) {if (resultCode == RESULT_OK) {Uri contactUri = data.getData();String[] projection = {Phone.NUMBER};// Consider using CursorLoader to perform the query.Cursor cursor = getContentResolver().query(contactUri, projection, null, null, null);cursor.moveToFirst();int column = cursor.getColumnIndex(Phone.NUMBER);String number = cursor.getString(column);}}
}

三、被调用的Activity如何返回结果

1、当其他Activity调用的时候被调用的Actvity要定义IntentFilter来相应的Activity
1)定义Action action为字符串,调用者必须设置Action
2) 定义Data data通常分为两部分 一部分为uri 二部分为MIMType。 可以不定义,也可以指定义一部分
3)定义Category 当Activity定义了Action的时候必须显示的定义 一般为android.intent.category.DEFAULT

<activity android:name="ShareActivity"><!-- filter for sending text; accepts SENDTO action with sms URI schemes --><intent-filter><action android:name="android.intent.action.SENDTO"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="sms" /><data android:scheme="smsto" /></intent-filter><!-- filter for sending text or images; accepts SEND action and text or image data --><intent-filter><action android:name="android.intent.action.SEND"/><category android:name="android.intent.category.DEFAULT"/><data android:mimeType="image/*"/><data android:mimeType="text/plain"/></intent-filter>
</activity>

2、如何返回结果

Intent result = new Intent("com.example.RESULT_ACTION", Uri.parse("content://result_uri"));
setResult(Activity.RESULT_OK, result);
finish();

>

更多推荐

Activity之间的交互

本文发布于:2024-02-06 22:43:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1751586.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Activity

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!