本文共 1861 字,大约阅读时间需要 6 分钟。
当构建一个Intent,必须制定一个action来触发其他action。你可以指定Intent 携带数据的类型。 Send Text Content 可以用ACTION_SEND将text 内容从一个activity 发送到另外一个activity。 下面这个子类中用ACTION_SEND 触发动作,用setType来指定类型,用putExtra来携带数据. Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.setType("text/plain"); startActivity(sendIntent); 如果已安装的application中intent_filter中有指定action为ACTION_SEND且MIMT type 为text/plain的话,Android系统就会启动这个application。如果有多于一个application 符合条件的话,系统会显示一个chooser的对话框让用户选择. 你也可以主动调用Intent.createChooser 来主动显示一个chooser对话框.这样走有三个好处,1,及时用于已经选择默认的application,还是会再提示chooser 让用户选择,2如果没有application 匹配的话,系统会显示一个系统对话框。3,你可以指定chooser的title. 一下是一个例子。 Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.setType("text/plain"); startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to))); Send Binary Content 和text一样,只要将putExtra的第一个参数由Intent.EXTRA_TEXT换成Intent.EXTRA_STREAM就行. Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); shareIntent.setType("image/jpeg"); startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))); 接收uriToImage的application 要有访问uriToImage的权限,所以一般用ContentProvide或者MediaStore来保存数据. 可以通过下面的方式一次发送多个数据。 特别注意setAction(Intent.ACTION_SEND_MULTIPLE); ArrayList<Uri> imageUris = new ArrayList<Uri>(); imageUris.add(imageUri1); // Add your image URIs here imageUris.add(imageUri2); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE); shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, "Share images to.."));转载地址:http://mvcmi.baihongyu.com/