从零开始水安卓——APP内容共享
在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内容共享相关推荐
- Android学习——APP内容共享
APP内容共享 发送文本内容 发送简单的数据到其他应用,比如社交分享的内容,意图允许用户快速而方便地共享信息. //分享简单文本内容public void shareSimpleContentClic ...
- 从零开始写安卓APP 《第一行代码》笔记 第一周
这是软件开发课的任务,本人其实不会java也不会安卓开发.以前只做过web端,因为某课程的爆炸实验单人撸了全栈.不过好在很早前就想学了,这里记录一下过程.放的主要是<第一行代码>的一些笔记 ...
- 安卓APP注册登录+Tomcat服务器搭建+MySQL数据库建立+加密传输+servlet后端内容编写及部署到Tomcat服务器
认真学习安卓也有三四个月了,现在记录一下关于用户的各种操作. 1.安卓APP的实现: 先看一下展示动图吧! 首先是登录界面的xml---------activity_mian.xml <?xml ...
- 开发安卓app游戏_「安卓APP开发流程」安卓APP如何开发的?
21世纪,智能手机走进了人们的生活,现在的智能手机的操作系统基本分为两种,一种是IOS系统(苹果系统).安卓系统,其中,安卓系统是开源的,所以很多品牌商会讲安卓包装成自己的系统,但核心还是一样的,都是 ...
- 基于STM32-消防栓监测系统毕业设计---论文(附加最全面的从硬件电路设计->驱动程序设计->阿里云物联网搭建->安卓APP设计)
设计展示视频连接:消防栓监测系统视频 驱动程序工程文件:消防栓监测系统驱动程序工程(全寄存器开发的) 消防栓监测系统所有设计资料:全栈设计,如下图所示 消防栓监测系统论文(图片看不清的可以下载文档看) ...
- 安卓app服务器地址文件夹,查看安卓app的服务器地址
查看安卓app的服务器地址 内容精选 换一换 robox脚本里的docker run命令中的镜像名称要改成本地自己注册的名称.(名称为:镜像注册中的名称,也可以通过docker images查看)设置 ...
- 安卓app开发方案_「安卓APP开发流程」安卓APP如何开发的?
21世纪,智能手机走进了人们的生活,现在的智能手机的操作系统基本分为两种,一种是IOS系统(苹果系统).安卓系统,其中,安卓系统是开源的,所以很多品牌商会讲安卓包装成自己的系统,但核心还是一样的,都是 ...
- 华为鸿蒙系统能下app嘛,鸿蒙系统可以安装安卓app软件吗
[鸿蒙系统可以安装安卓app软件吗]近几年来,随着智能手机硬件的更新迭代.手机系统也愈加成熟完善.我们今天在市面上能看到手机系统基本上可以分为两大类:iOS系统和安卓系统.后者虽在国内有诸多定制版本, ...
- 鸿蒙手机安装不了软件,鸿蒙系统可以安装安卓app软件吗
[鸿蒙系统可以安装安卓app软件吗]近几年来,随着智能手机硬件的更新迭代.手机系统也愈加成熟完善.我们今天在市面上能看到手机系统基本上可以分为两大类:iOS系统和安卓系统.后者虽在国内有诸多定制版本, ...
最新文章
- 独家 | 深度学习 V.S. 谜题游戏
- [SqlServer]数据库中自定义拆分字符串函数Split()
- 【SpringMVC】SpringMVC基础-SpringMVC项目快速搭建、日志框架为logback
- InstallShield 2020
- 二、Java 面向对象高级——Collection、泛型
- 零售连锁专卖信息化解决方案简介之一
- ide循环执行用例 selenium_Selenium Web自动化Page Object设计模式——循环执行测试用例...
- Ext 介绍入门之 Templates(模板)
- djangobook的旧版本代码,关于数据库
- 企业微信机器人还能这么玩?
- win7 bcdedit
- linux服务器 使用教程
- Python 爬虫找到数据了 re XPath requests Pool
- Mahout之——mahout0.9注意事项SlopeOneRecommender
- Hadoop生态圈初步认识
- 2006年重大病毒***大阅兵
- 京东一键复制宝贝,如何快速上货?
- 《鹿鼎记》的第一遍读后感作文3600字
- 浪迹天涯之——乖,摸摸头
- 【XMind】如何用XMind8绘制流程图?