在ActionBar一文中已经略有涉及该部分内容,实际上已经算是一个比较完整的小Demo了

https://blog.csdn.net/nishigesb123/article/details/89082008


发送文本内容

准备一个Button

   <Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/simpletext"android:onClick="simpletext"android:text="分享简单文本"app:layout_constraintTop_toTopOf="parent"/>

对应点击事件

package com.example.a4_8share;import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void simpletext(View v){Intent intent=new Intent();intent.setAction(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_TEXT,"分享一个简单文本");startActivity(intent);}
}

指定选择器

还可以设置一个指定选择器

可以看到,与之前还是有一定的区别的。


发送二进制内容

可以通过发送二进制内容实现图片分享。

 <Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/photo"android:onClick="photo"android:text="分享图片"app:layout_constraintTop_toBottomOf="@id/simpletext"/>
    public void photo(View v){Intent intent=new Intent();intent.setAction(Intent.ACTION_SEND);intent.setType("image/*");//uri即图片路径Uri uri=Uri.parse("/storage/emulated/0/Download/timg%20(1).jpg");intent.putExtra(Intent.EXTRA_STREAM,uri);startActivity(intent.createChooser(intent,"分享图片"));}

发送多件内容

类似的,就不多做演示,参考代码如下:

    public void multiple(View view){Uri uri1=Uri.parse("路径1");Uri uri2=Uri.parse("路径2");ArrayList<Uri> list=new ArrayList<>();list.add(uri1);list.add(uri2);Intent intent=new Intent();intent.setAction(Intent.ACTION_SEND_MULTIPLE);intent.setType("image/*");intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,list);startActivity(intent.createChooser(intent,"分享多个内容"));}

从其他应用程序接受简单的数据

创建一个新的Activity(Receiver)

修改其配置清单文件

        <activity android:name=".Receiver"><intent-filter><action android:name="android.intent.action.SEND"></action><category android:name="android.intent.category.DEFAULT"></category><data android:mimeType="text/plain"></data></intent-filter></activity>

布局中添加一个Textview用于接收文本,细节不表,下面是代码部分(处理接收到的内容放在TextView里)

package com.example.a4_8share;import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;public class Receiver extends AppCompatActivity {private TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_receiver);textView = findViewById(R.id.receiver);handlerContent();}//处理内容public void handlerContent() {Intent intent = getIntent();String type = intent.getType();String action = intent.getAction();if (Intent.ACTION_SEND.equals(action)) {//判断是否是文本,如果是才选择这种处理方式if ("text/plain".equals(type)) {String info = intent.getStringExtra(Intent.EXTRA_TEXT);System.out.println(info);textView.setText(info);}}}
}

我们选择分享简单文本,可以发现已经可以指定当前app来接收了

点击效果如下:

ShareActionProvider

可以通过ShareActionProvider把分享操作附加到个一个菜单项上,API级别需要大于14。

需要一个Menu,并为其添加Item

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><itemandroid:id="@+id/share"android:title="share"android:orderInCategory="200"app:showAsAction="ifRoom"app:actionProviderClass="android.support.v7.widget.ShareActionProvider"android:icon="@android:drawable/ic_menu_share"></item>
</menu>

完整代码:实际上只完成重写onCreateOptionsMenu

package com.example.a4_8share;import android.content.Intent;
import android.net.Uri;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.ShareActionProvider;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu,menu);MenuItem item = menu.findItem(R.id.share);ShareActionProvider sap = (ShareActionProvider) MenuItemCompat.getActionProvider(item);Intent intent=new Intent();intent.setAction(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_TEXT,"ShareActionProvider");sap.setShareIntent(intent);return true;}public void simpletext(View v){Intent intent=new Intent();intent.setAction(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_TEXT,"分享一个简单文本");//startActivity(intent);startActivity(intent.createChooser(intent,"设置了一枚指定选择器"));}public void photo(View v){Intent intent=new Intent();intent.setAction(Intent.ACTION_SEND);intent.setType("image/*");//uri即图片路径Uri uri=Uri.parse("/storage/Pictures/CoolMarket/111.jpg");intent.putExtra(Intent.EXTRA_STREAM,uri);startActivity(intent.createChooser(intent,"分享图片"));}public void multiple(View view){Uri uri1=Uri.parse("/storage/Pictures/CoolMarket/111.jpg");Uri uri2=Uri.parse("/storage/Pictures/CoolMarket/111.jpg");ArrayList<Uri> list=new ArrayList<>();list.add(uri1);list.add(uri2);Intent intent=new Intent();intent.setAction(Intent.ACTION_SEND_MULTIPLE);intent.setType("image/*");intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,list);startActivity(intent.createChooser(intent,"分享多个内容"));}}

从零开始水安卓——APP内容共享相关推荐

  1. Android学习——APP内容共享

    APP内容共享 发送文本内容 发送简单的数据到其他应用,比如社交分享的内容,意图允许用户快速而方便地共享信息. //分享简单文本内容public void shareSimpleContentClic ...

  2. 从零开始写安卓APP 《第一行代码》笔记 第一周

    这是软件开发课的任务,本人其实不会java也不会安卓开发.以前只做过web端,因为某课程的爆炸实验单人撸了全栈.不过好在很早前就想学了,这里记录一下过程.放的主要是<第一行代码>的一些笔记 ...

  3. 安卓APP注册登录+Tomcat服务器搭建+MySQL数据库建立+加密传输+servlet后端内容编写及部署到Tomcat服务器

    认真学习安卓也有三四个月了,现在记录一下关于用户的各种操作. 1.安卓APP的实现: 先看一下展示动图吧! 首先是登录界面的xml---------activity_mian.xml <?xml ...

  4. 开发安卓app游戏_「安卓APP开发流程」安卓APP如何开发的?

    21世纪,智能手机走进了人们的生活,现在的智能手机的操作系统基本分为两种,一种是IOS系统(苹果系统).安卓系统,其中,安卓系统是开源的,所以很多品牌商会讲安卓包装成自己的系统,但核心还是一样的,都是 ...

  5. 基于STM32-消防栓监测系统毕业设计---论文(附加最全面的从硬件电路设计->驱动程序设计->阿里云物联网搭建->安卓APP设计)

    设计展示视频连接:消防栓监测系统视频 驱动程序工程文件:消防栓监测系统驱动程序工程(全寄存器开发的) 消防栓监测系统所有设计资料:全栈设计,如下图所示 消防栓监测系统论文(图片看不清的可以下载文档看) ...

  6. 安卓app服务器地址文件夹,查看安卓app的服务器地址

    查看安卓app的服务器地址 内容精选 换一换 robox脚本里的docker run命令中的镜像名称要改成本地自己注册的名称.(名称为:镜像注册中的名称,也可以通过docker images查看)设置 ...

  7. 安卓app开发方案_「安卓APP开发流程」安卓APP如何开发的?

    21世纪,智能手机走进了人们的生活,现在的智能手机的操作系统基本分为两种,一种是IOS系统(苹果系统).安卓系统,其中,安卓系统是开源的,所以很多品牌商会讲安卓包装成自己的系统,但核心还是一样的,都是 ...

  8. 华为鸿蒙系统能下app嘛,鸿蒙系统可以安装安卓app软件吗

    [鸿蒙系统可以安装安卓app软件吗]近几年来,随着智能手机硬件的更新迭代.手机系统也愈加成熟完善.我们今天在市面上能看到手机系统基本上可以分为两大类:iOS系统和安卓系统.后者虽在国内有诸多定制版本, ...

  9. 鸿蒙手机安装不了软件,鸿蒙系统可以安装安卓app软件吗

    [鸿蒙系统可以安装安卓app软件吗]近几年来,随着智能手机硬件的更新迭代.手机系统也愈加成熟完善.我们今天在市面上能看到手机系统基本上可以分为两大类:iOS系统和安卓系统.后者虽在国内有诸多定制版本, ...

最新文章

  1. 独家 | 深度学习 V.S. 谜题游戏
  2. [SqlServer]数据库中自定义拆分字符串函数Split()
  3. 【SpringMVC】SpringMVC基础-SpringMVC项目快速搭建、日志框架为logback
  4. InstallShield 2020
  5. 二、Java 面向对象高级——Collection、泛型
  6. 零售连锁专卖信息化解决方案简介之一
  7. ide循环执行用例 selenium_Selenium Web自动化Page Object设计模式——循环执行测试用例...
  8. Ext 介绍入门之 Templates(模板)
  9. djangobook的旧版本代码,关于数据库
  10. 企业微信机器人还能这么玩?
  11. win7 bcdedit
  12. linux服务器 使用教程
  13. Python 爬虫找到数据了 re XPath requests Pool
  14. Mahout之——mahout0.9注意事项SlopeOneRecommender
  15. Hadoop生态圈初步认识
  16. 2006年重大病毒***大阅兵
  17. 京东一键复制宝贝,如何快速上货?
  18. 《鹿鼎记》的第一遍读后感作文3600字
  19. 浪迹天涯之——乖,摸摸头
  20. 【XMind】如何用XMind8绘制流程图?

热门文章

  1. 什么是文件格式的幻数
  2. 从数学计算上分析人脑与电脑差异
  3. 电子元器件行业SCM供应链平台降低管理成本,提升供应链系统效率
  4. MATLAB 棋盘格图片校准
  5. Android 显示后台返回富文本rgb色值适配问题
  6. 自己的微信竟然延迟接收消息了,这是什么情况?
  7. 软件企业具体可享受哪些所得税优惠政策?
  8. 基于javaweb的图书管理系统(java+jsp+layui+bootstrap+servlet+mysql)
  9. RespResult
  10. 分享111个HTML艺术时尚模板,总有一款适合您