在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. 【C++/C】【学习笔记】二分算法——处理“最小却最大”问题
  2. python selenium webdriver方法封装(find_element_by)
  3. Power BI 将商业智能数据转换为数据理解
  4. rmi远程反序列化rce漏洞_Apache Dubbo Provider默认反序列化远程代
  5. MySQL 基础 ———— SAVEPOINT 的应用
  6. Dojo实现Tabs页报错(二)
  7. 【cocos2d-x】游戏构成要素③----游戏关卡的实现
  8. SpringBoot : Consider defining a bean of type xxx in your configuration.
  9. mysql怎么保存视图_MySQL的视图和存储
  10. Java 网络编程(三) 创建和使用URL访问网络上的资源
  11. BZOJ1076[SCOI2008] 奖励关
  12. 流量计算机组成keypad,曾经的我
  13. Linux 下制作虚拟软盘镜像
  14. “华为杯”——中国研究生数学建模大赛相关解读及LaTeX模版、算法、真题、优秀论文等相关资源分享(超详细)
  15. js大于等于小于等于书写
  16. 【论文阅读】UntrimmedNets for Weakly Supervised Action Recognition and Detection
  17. iOS 四舍六入五成双算法
  18. 从DS1302电路设计总结的晶振电路设计规范
  19. webservice返回值为Map类型的处理方法
  20. Flutter 设置 App 的主色调与字体

热门文章

  1. 【示例源码】还在为毒奶粉忧桑?轻松一下,玩玩猩球保卫战吧(html5游戏)
  2. bash中的字符串长度
  3. OpenLDAP配置坎坷路
  4. Linux下串口编程总结
  5. 第一次见岳父岳母的攻略「转载」
  6. HIT信息安全概论复习:1~10
  7. 网易云静态页面html+css-----首页、热歌榜、搜索
  8. 找不到实时聊天软件?给你推荐电商企业都在用的!
  9. 【开源项目】电视盒子好用又强大的APP: TVRemoteIME
  10. 用HTML写一个简易的登录界面