android 外部内容分享到app内,Android分享其他APP的内容之文本和图片

像今日头条,网易新闻,我们如何才能分享其内容呢?本地的图库的图片,该如何拿到呢?

Android 提供了应用程序间的内容分享机制,这里只对分享其他应用的内容举例。

如果想要分享其他应用数据,首先要在manifest文件上注册,如下:

android:label="@string/friend"

android:icon="@mipmap/friend"

>

这里三个分别解释下:

代表数据源就一个,且数据类型是image。同理:

代表数据源就一个,数据类型是text(文本类型)。

从android.intent.action.SEND_MULTIPLE就可以看出,这个是可以分享多个数据的Image类型。

接收数据:

/**

* 接收数据

*/

private void intentSend() {

Intent intent = getIntent();

String action = intent.getAction();

String type = intent.getType();

if (Intent.ACTION_SEND.equals(action) && type != null) {

if ("text/plain".equals(type)) {

handleSendText(intent);

} else if (type.startsWith("image/")) {

handleSendImage(intent);

// intent.get

}

} else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {

if (type.startsWith("image/")) {

handleSendMultipleImages(intent);

}

} else {

}

}

这里接收三个类型的数据,文本,单张图片,多张图片

1,文本

/**

* 分享文本

* @param intent

*/

private void handleSendText(Intent intent) {

String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);

String sharedTitle = intent.getStringExtra(Intent.EXTRA_TITLE);

if (sharedText != null) {

text.setText(sharedText);

}

}

这个比较简单,直接取出数据即可。

2,单张图片

/**

* 获取图片 单张

* @param intent

*/

private void handleSendImage(Intent intent) {

Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);

if (imageUri != null) {

getRealPathFromURI(this,imageUri);

}

}

拿出图片的URI 并且取出原图:

/**

* 通过Uri获取文件在本地存储的真实路径

* @param act

* @param contentUri

* @return

*/

public String getRealPathFromURI(Activity act, Uri contentUri) {

// can post image

String[] proj = { MediaStore.Images.Media.DATA };

Cursor cursor = getContentResolver().query(contentUri, proj, // Which columns to return

null, // WHERE clause; which rows to return (all rows)

null, // WHERE clause selection arguments (none)

null); // Order-by clause (ascending by name)

int column_index = 0;

if( cursor.moveToFirst())

{

column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

//一个TextView 展示

text.append(cursor.getString(column_index)+"\n");

}

return cursor.getString(column_index);

}3,多张图片

/**

* 多图分享

* @param intent

*/

private void handleSendMultipleImages(Intent intent) {

ArrayList imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);

if (imageUris != null) {

for (Uri image : imageUris){

getRealPathFromURI(this,image);

}

}

}

多张图片无非就是拿到Uri 数组,然后便利获取其真实路径。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值