当构建一个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.."));
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.."));