Android学习笔记第二篇--分享数据

第二篇、Android分享操作

1. 分享简单数据

  • 向其他app发送检单数据
    1. Intent发送数据必须有actions,其他对应action的activity响应事件。通过Intent实现分享功能,而ActionBar可使用ShareActionProvider来快速实现分享功能。如下是使用Intent.createChooser实现分享功能的demo:
    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,"Share to My friends");

    如上,可以显示出多个选择框,列出可响应的分享社交App

    1. 分享二进制文件,需要指定特定的MIME类型,在EXTRA_STREAM里面放置数据的URI,如下分享一个图片的代码示例:

      Intent shareIntent = new Intent();
      shareIntent.setAction(Intent.ACTION_SEND);
      shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);//重要,指定URI
      shareIntent.setType("image/jpeg");//指定MIME类型
      startActivity(Intent.createChooser(shareIntent,"Share a picture");
      注意:
      • 可以使用*/*指定MIME类型,但是仅有能够处理一般数据类型的Activity才能匹配到。因为普通的Activity不能详尽所有MIME类型。
      • 响应的Activity需要有访问URI的权限。两种方案,一是ContentProvider(per-URI permissions);二是MediaStore(亦可存储非媒体文件,Android3.0以后。)
    2. 多块内容,Multiple。同时分享不同的内容,可使用ACTION_SEND_MULTIPLE及数据URIs。而MIME需根据内容类型调整,可使用*符号。如image/jpegimage/**/*。如下:

      ArrayList<Uri> imageUris = new ArrayList<Uri>();
      imageUris.add(imageUri1); // Add your image URIs here
      imageUris.add(imageUri2);
      //接收Activity需要有权限哦
      Intent shareIntent = new Intent();
      shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);//复合类型的MIME,Action
      shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);//传递数组
      shareIntent.setType("image/*");//复合MIME
      startActivity(Intent.createChooser(shareIntent, "Share images to.."));
  • 接收外App传的数据
    • Activity 在manifest文件 配置,通过Intent Filters来过滤需要处理的数据Action,如下Activity接收单张图片、文本、多张图片时,不同的intent-filer配置:

      <activity android:name=".ui.MyActivity" >
      <!-- 注释,单类型图片的Action过滤,其Action名称不同-->
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="image/*" />
        </intent-filter>
      <!-- 注释,文本类型的Action过滤-->
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值