我们在开发中会遇到和其他应用的交互情形,下面是一个简单的方式。整个的使用类似“使用intent调用系统自带的拍照应用并获得结果”。

先看页面:

   

我们看看实现步骤。

第一个应用 DEMO1:

1.创建一个自定义的action, 使用intent发出

   String action = "zyf.demo.customAction";
Intent n = new Intent(action);

2.附件一些自定义的内容,使用putExtra

  n.putExtra("key1", "hello,这是来自demo1的消息。");

3.可以先检查是否有匹配这个action的内容。

            String action = "zyf.demo.customAction";
Intent n = new Intent(action); PackageManager packageManager = getBaseContext().getPackageManager();
final Intent intent = new Intent(action);
List<ResolveInfo> resolveInfo = packageManager
.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
if (resolveInfo.size() > 0) {
Toast.makeText(getBaseContext(), "找到了匹配的activity", 0).show();
}
else{
Toast.makeText(getBaseContext(), "未找到匹配的activity", 0).show();
}

4.使用 startActivityForResult 方法 启动Intent。

  startActivityForResult(n, REQUEST_CODE_1);

5.获得结果(来自DEMO2返回的)

        final int REQUEST_CODE_1 = 1;

	@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_1) {
String res = data.getStringExtra("result");
Toast.makeText(getBaseContext(), "收到:" + res, 0).show();
} else
super.onActivityResult(requestCode, resultCode, data);
}

  

第二个应用,DEMO2:

1.新建一个activity用于接收 “上面指定的action”,并在AndroidManifest.xml 文件中注册intent-filter。

      <activity
android:name="zyf.demo.demo2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="zyf.demo.customAction"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

2.在activity中可以显示来自DEMO1的数据。

    private void tryShowExtra() {
try {
Intent intent = getIntent();
String extra1 = intent.getStringExtra("key1");
txt1.setText(extra1);
} catch (Exception e) {
txt1.setText(e.getMessage());
} }

3.在activity中处理关闭当前应用时的返回内容

    public void onClick(View v){
Intent resultIntent = new Intent();
resultIntent.putExtra("result", "这是来自demo2的结果");
setResult(Activity.RESULT_OK, resultIntent);
this.finish();
}

至此,完成。演示代码下载

android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果的更多相关文章

  1. android开发中的5种存储数据方式

    数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...

  2. Android DevArt4:IntentFilter学习及深入~问题描述:在不指定具体action前提下,如果有两个以上的Activity,具有完全相同的intent-filter,项目同步是否会出现异常?程序运行是否会崩溃?

    概述:GitHub IntentFilter意图过滤器,三种匹配规则:action.category.data 重点:过滤规则中必须设置 '<category android:name=&quo ...

  3. Android 开发:view的几种布局方式及实践

    View的几种布局显示方法,以后就不会在针对布局方面做过多的介绍.View的布局显示方式有下面几种:线性布局(Linear Layout).相对布局(Relative Layout).表格布局(Tab ...

  4. 【转】Android开发学习笔记:5大布局方式详解

    Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...

  5. Android开发——View滑动的三种实现方式

    0. 前言   Android开发中,我们常常需要View滑动实现一些绚丽的效果来优化用户体验.一般View的滑动可以用三种方式实现. 转载请注明出处:http://blog.csdn.net/seu ...

  6. Android开发(二十四)——数据存储SharePreference、SQLite、File、ContentProvider

    Android提供以下四种存储方式: SharePreference SQLite File ContentProvider Android系统中数据基本都是私有的,一般存放在“data/data/程 ...

  7. Android开发笔记:SQLite导入导出数据

    SQLite是Android中最方便使用的数据库了,现在看下如何快速的在SQLite中导入导出数据. 首先由于是.NET项目转Android,原有数据库使用的是SQLSERVER,由于项目相同部分结构 ...

  8. Android开发之使用DefaultHandler处理XML数据

    一.定义规则 XML数据结构定义 请记住上面的定义,后面我会用“标签开始”.“文本”.“标签结束”表示SAX正在处理哪部分XML数据 事件模型 为什么这里我要谈到这个,因为SAX处理XML数据是采用事 ...

  9. android开发中难免遇到listview刷新数据出现异常

    异常:java.lang.IllegalStateException: The content of the adapter has changed but ListView did not rece ...

随机推荐

  1. python 爬虫 重复下载 二次请求

    在写爬虫的时候,难免会遇到报错,比如 4XX ,5XX,有些可能是网络的原因,或者一些其他的原因,这个时候我们希望程序去做第二次下载, 有一种很low的解决方案,比如是用  try  except t ...

  2. Appium 脚本代码中启动appium server

    import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.service.local.Appiu ...

  3. mysql中的NULL的判断

      mysql> delete from `zhangchao` where x='NULL'; rows affected (0.00 sec) mysql> delete from ` ...

  4. 【Android开发】Api_Android_Distribute

    原文链接:http://android.eoe.cn/topic/android_sdk {"version": "20120817","pageid ...

  5. 配置并使用Android支持的库

    原文链接:http://android.eoe.cn/topic/android_sdk Android Support Library(支持库)提供了包含一个API库的JAR文件,当你的应用运行在A ...

  6. Atitit gui控件定位解决方案

    Atitit gui控件定位解决方案 1.1. 但是AUTOIT没有找图功能..可以请大侠们写一份这个UDF出来吗?1 1.2. ahk1 1.3. Java +opencv 模板匹配2 1.1. 但 ...

  7. PCIe简介及引脚定义

    参考文章:http://www.2cto.com/os/201607/523581.html http://blog.csdn.net/michaelcao1980/article/details/4 ...

  8. eclipse再见,android studio 新手新手教程(一)基本设置

    写在前面: 作为一个刚半仅仅脚踏入android开发的新手,在使用eclipse开发了两个自我感觉不甚成熟的商城类app之后.遇到了一些问题,总结为例如以下: 1,代码复用性. findviewByI ...

  9. POJ 1200 Crazy Search(字符串简单的hash)

    题目:http://poj.org/problem?id=1200 最近看了一个关于hash的问题,不是很明白,于是乎就找了些关于这方面的题目,这道题是一道简单的hash 字符串题目,就先从他入手吧. ...

  10. FFmpeg(12)-使用NDK通过GLSurfaceView完成视频的播放

    一.包含头文件和库文件 这里采用的是NDK中的ANativeWindow来完成视频的播放,因为需要添加相关的库和头文件. CMakeLists target_link_libraries( # Spe ...