android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
2015-08-14 14:53
1216 查看
我们在开发中会遇到和其他应用的交互情形,下面是一个简单的方式。整个的使用类似“使用intent调用系统自带的拍照应用并获得结果”。
先看页面:
我们看看实现步骤。
2.附件一些自定义的内容,使用putExtra
3.可以先检查是否有匹配这个action的内容。
4.使用 startActivityForResult 方法 启动Intent。
startActivityForResult(n, REQUEST_CODE_1);
5.获得结果(来自DEMO2返回的)
2.在activity中可以显示来自DEMO1的数据。
3.在activity中处理关闭当前应用时的返回内容
至此,完成。演示代码下载
先看页面:
我们看看实现步骤。
第一个应用 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开发(27) 看看我的手机里都有什么传感器
- android开发(28) 做个 指南针 应用
- android开发(29) 自定义曲线,可拖动,无限加载
- android开发(25) - 推送的实现,使用百度云推送
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- Android的SQLite如何判断一列是否存在
- arcgis for android 学习 - (8) 空间查询 - 点击某点,选中该点所在单位区域。
- android开发(23)使用DownloadManager下载文件
- android开发(24)使用SQLiteOpenHelper的onUpgrade实现数据库版本升级
- android开发(16) 遍历所有的已经安装的应用程序,启动其他的应用程序
- android开发(17) 扫描二维码 - 调用第三方APK来实现二维码扫描,参考自 开源项目zxing
- android开发(18) 调用手机的麦克风录音,并播放。
- android开发(19) 调用手机的摄像头录像,并播放。
- android开发(20) 使用adb建立pc和android设备之间的连接。usb连接方式。
- android开发(21)蜂鸣提示音和震动提示的实现。
- android开发(22)使用正则表达式 。从一个字符串中找出数字,多次匹配。
- android开发(22)使用正则表达式 。从一个字符串中找出数字,多次匹配。
- Android的SQLite中如何判断一个表是否存在
- arcgis for android 学习 - (5) 在地图指定位置添加“标记“,并尝试选中它
- arcgis for android 学习 - (6) 属性查询。检索图层上某个要素,并高亮显示它。