当前位置:首页 » 安卓系统 » android应用分享

android应用分享

发布时间: 2023-02-18 05:04:17

Ⅰ 利用 Android 系统原生 API 实现分享功能(2)

在之前的一篇文章 利用 Android 系统原生 API 实现分享功能 中主要说了下实现流程,但具体实施起来其实还是有许多坑要面对。那这篇文章就是提供一个封装好的 Share2 库供大家参考。

GitHub 项目地址:Share2

看过上一篇文章的同学应该知道,要调用 Android 系统内建的分享功能,主要有三步流程:

更多相关内容请参考上一篇,这里就不再重复赘述了。

知道大致的实现流程后,其实只要解决下面几个问题后就可以具体实施了。

这其实是直接决定了最终的实现形态,我们知道常见的使用场景中,只是为了在应用间分享图片和一些文件,那对于那些只是分享文本的产品而言,两者实现起来要考虑的问题完全不同。

所以为了解决这个问题,我们可以预先定好支持的分享内容类型,针对不同类型可以进行不同的处理。

在 Share2 中,一共定义了5种类别的分享内容,基本能覆盖常见的使用场景。在调用分享接口时可以直接指定内容类型,比如像文本、图片、音视频、已经其他各种类型文件。

对于不同类别的内容,可能会有不同的来源。比如文本可能就只是一个字符串对象,而对于分享图片或其他文件,我们需要一个 Uri 来标识一个资源。这其实就引出来具体实施时的一个大问题,如何获取要分享文件的 Uri,并且这个 Uri 要能被接收分享内容的应用处理才行 。

那么,如何获取要分享内容文件的 Uri?如果处理才能让接收方也能够根据 Uri 获取到文件?

我们把文件 Uri 的来源划分为下面三种类型:

常见场景 :通过文件选择器获取一个文件的 Uri

通过这种方式获取到的 Uri 是由系统 ContentProvider 返回的,在 Android 4.4 之前的版本和之后的版本有较大的区别,我们后面再说怎么处理。只要先记住这种系统返回给我们的 Uri 就行了。

比如调用系统相机进行拍照或录制音视频,要传入一个生成目标文件的 Uri ,从 7.0 开始我们需要用到 FileProvider 来实现。

如果用到了 FileProvider 就要注意跟系统 ContentProvider 返回 Uri 的区别,比如我们在 Manifest 中对 FileProvider 配置 android:authorities="com.xx.xxx.fileProvider" 属性,那这时系统返回的 Uri 格式就变成了 : content://com.xx.xxx.fileProvider... ,对于这种类型的 Uri 我们姑且叫 自定义 FileProvider 返回的 Uri ,后面一并说怎么处理。

我们调用 new File 时需要传入指定的文件路径,这个绝对路径通常是: /storage/emulated/0/... 这种样式,我们要想调用分享时也要变成 Uri 的形式才可以,那么如何把文件路径变成一个文件 Uri ?这个问题下面也一并进行回答。

前面提到了文件 Uri 的三种分类,对应不同类型处理方式也不同,不然你最先遇到的问题就是:

这是由于对系统返回的 Uri 缺失访问权限导致,所以要对应用进行临时访问 Uri 的授权才行,不然会提示权限缺失。

对于要分享系统返回的 Uri 我们可以这样进行处理:

需要注意的是对于自定义 FileProvider 返回 Uri 的处理,即使是设置临时访问权限,但是分享到第三方应用也会无法识别该 Uri

典型的场景就是,我们如果把自定义 FileProvider 的返回的 Uri 设置分享到微信或 QQ 之类的第三方应用,会提示文件不存在,这是因为他们无法识别该 Uri。

关于这个问题的处理其实跟下面要说的把文件路径变成系统返回的 Uri 一样,我们只需要把自定义 FileProvider 返回的 Uri 变成第三方应用可以识别系统返回的 Uri 就行了。

创建 FileProvider 时需要传入一个 File 对象,所以直接可以知道文件路径,那就把问题都转换成了: 如何通过文件路径获取系统返回的 Uri

下面是根据传入的 File 对象和类型来查询系统 ContentProvider 来获取相应的 Uri,已经按照不同文件类型在不同系统版本下的进行了适配。

其中 forceGetFileUri 方法是通过反射实现的,处理 7.0 以上系统的特殊情况下的兼容性,一般情况下不会调用到。Android 7.0 开始不允许 file:// Uri 的方式在不同的 App 间共享文件,但是如果换成 FileProvider 的方式依然是无效的,我们可以通过反射把该检测干掉。

通过 File Path 转成 Uri 的方式,我们最终统一了调用系统分享时传入内容 Uri 的三种不同场景,最终全部转换为传递系统返回的 Uri,让第三方应用能够正常的获取到分享内容。

Share2 按照上述方法进行了具体实施,可以通过下面的方式进行集成:

分享图片到指定界面,比如分享到微信朋友圈

GitHub 项目地址:Share2

安卓手机之间怎么互传软件

若使用vivo手机,分享软件的方法:
游戏中心:在游戏中心--搜索软件--进入软件详情界面--点击右上角竖三点--分享--选择分享方式即可;
应用商店:在应用商店--搜索软件--进入软件详情界面--点击右上角分享图标--选择分享方式即可;
互传:进入互传--传送文件--两台设备分别选择“我要发送”、“我要接收”--扫描后选择对方连接--发送方选择软件--发送即可。

Ⅲ android怎么把其他app的内容分享到自己的app里

很多时候我们的应用在使用微信分享内容之后,希望其他用户点击该分享内容能够跳转到我们的App,以实现闭环,这样的分享才是最有价值的。这种需求涉及到不同应用之间的交互,虽然微信提供了分享SDK,但仍然有不少限制,现在总结两种在Android平台上初步认为可行的方案:

1.分享网页,从分享的网页跳转回原App。

2.分享WXAppExtendObject类型的数据,且只能分享给好友,好友从聊天列表点击收到的分享内容可以直接跳转第三方App(前提是好友手机上已经安装了该App)。下面来详细说明两个方案,由于是在项目中实测的,为了隐私及行文方便,假设我们的应用的名字为MyApp,效果截图也就不再展示。

方案一:

从WebView(该WebView从属于另一个App,并非我们自己的App)跳转到MyApp的某个界面(这里以跳转到MyApp的Acticity A为例)。具体的实现逻辑如下:

(1)该WebView显示的网页内容只是一个超链接,自定义了一个scheme=myapp://,后边可以附加一些参数,如果需要从网页向App传值的话。

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>This is title</title>

</head>

<body>

<a href=’myapp://id=909624′>Jump to MyApp</a>

</body>

</html>

该网页在WebView打开后就是一个简单的超链接,截图不再附。

(2)MyApp中的Activity A需要配置特定的infliter,如下:

<activity

<intent-filter>

<data android:scheme="myapp" />

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.BROWSABLE"/>

</intent-filter>

</activity>

(3)当在WebView上点击上述自定义的超链接时就可以打开MyApp的A界面,所传递的参数也可以在所跳转到的Activity中获取,方法如下:

getIntent().getScheme();//获得Scheme名称

getIntent().getDataString();//获得Uri全部路径,根据自定义的格式解析字符串即可获取我们上面附加的参数。可行的实施方案:

MyApp中调用微信分享分享网页内容,只需要在网页中嵌入跟Android客户端约定好的超链接协议scheme,那么点击时就可以跳转到MyApp。

问题1:如果用户安装了MyApp,就可以点击网页跳转,如果没有安装MyApp的话,WebView就会提示找不到该页面。制作网页时可以在网页中做检测,没安装MyApp的话,页面就重定向到应用的下载页面。

问题2:在普通App的WebView中和浏览器中上述机制是可以的,但是在微信的WebView是不可以点击直接跳转我们的应用的,可能是微信做了某些过滤,且仅仅支持跟微信有深度合作的应用的跳转,如大众点评是可以的。针对这种情况,我们可以引导用户使用浏览器打开所分享的网页,然后点击就可以跳转应用了。方案二:

使用微信SDK分享WXAppExtendObject数据给好友,好友点击跳转MyApp的某个页面(需要在分享时传递构造跳转Intent的参数)。

1.该类型的分享(具体请参考微信分享SDK)可以带几个参数,参数中必须附带一些构造跳转Intent的数据。

2.好友点击分享的内容,回调IWXAPIEventHandler接口的类的onReq方法,具体为

ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:这种情况才会调用,此时可以取出分享时附带在参数中的一些数据,构造一个跳转Intent,调用startActivity(intent) 来打开MyApp。

由于是项目实测,这种实现方式的截图也就不传了。

问题1:该分享方式只能分享给好友,不能分享到朋友圈。

问题2:如果好友没安装MyApp,点击微信中好友分享过来的消息后无反应,无法提醒“未安装MyApp,请下载”,因为这些逻辑要实现的话本身就是在MyApp里面写的,原本没装的话根本无法检测。

问题3:WXAppExtendObject类型的分享,数据有大小限制,

extInfo(String)限制2KB;

fileData(byte[])供第三方使用的文件二进制数据,最大10M;

filePath:(String)Local directory of the file provided for applications,本身长度最大10KB,文件大小同上,不超过10M。以上就是Android平台好友点击微信分享的内容后跳转来源App的两种实现方案,各有优点和局限性,请根据自身业务需求选择合适的分享方式,由于未能附截图说明,如有哪里表述不清楚的,欢迎留言讨论。

Ⅳ 怎样在两个安卓手机间传送应用程序

在两个安卓手机间传送应用程序步骤如下:


1、点击FV。

Ⅳ 怎么分享软件(安卓手机)

若使用的是vivo手机,可下载“互传”软件--点击软件中--我要发送--另一部手机进入互传选择我要接收--连接后,选择需要分享的软件--发送即可将软件分享给好友。

Ⅵ 安卓如何分享已安装软件

安卓分享已安装软件的具体操作步骤如下:

1、首先我们打开手机,打开自己的手机QQ,默认自动进入到近期的聊天界面,找到想要分享的好友点击它。

Ⅶ 安卓和苹果手机互传软件

相信大家十一小长假期间肯定用手机拍摄了不少的照片,尽管现在智能手机拍照已变得相当方便,随手就可以拍照片、录制小视频,但如果将这几十张或者容量较大的视频分享给同行好友的时候,大家会采用什么无线的传输方式呢?

大多数用户会比较直接的想到微信传输,的确微信非常快捷的一种无线传输方式。但是当照片数量超过9张,或者视频大小超过限制的时候,还有照片非原图会被压缩,这时候你就会发现微信也有很多不方便的地方,而且还会浪费手机流量。
今天我们就来介绍几种常见传输文件的方式,或许在你分享照片的时候能有所帮助。
●iPhone与iPhone传输 AirDrop跨设备很简单
手机与手机传输文件是移动出行中最为常见的方式,按照内置手机系统划分大体分为两大阵营,一个就是Android系,很多国产手机基本上都是基于Android系统深度定制并优化的手机操作系统,另一个就是iPhone手机的iOS系统。
点击播放 GIF 1.1M
先来说iPhone与iPhone之间传输照片和视频的方法,其实这个功能果粉们应该都很熟悉,就是AirDrop隔空投送功能,使用“隔空投送”与附近的其他 Apple 设备共享和接收照片、文稿等,可以跨设备、跨平台传输数据,iPhone、iPad、Mac 之间互传文件基本畅通无阻。

确保要接收内容的用户就在附近,并且在蓝牙和 Wi-Fi 范围内。不用数据流量,可以支持苹果设备与苹果设备之间的数据传输,而且速度极快,非常方便。使用方法很简单,打开一个 App,轻点“共享”或“共享”按钮


●Android与Android 传输自成一派
如果是Android与Android手机互传文件方式相对比较多,如果两款同为一个品牌旗下的手机,就比较简单了。
例如两款均为华为/荣耀手机的话,通过Huawei Share就可以完成分享,Huawei Share是一种文件快速分享方式,可以在华为设备之间方便快捷地传输图片、视频等文件。它通过蓝牙快速发现周边其他华为设备,然后通过 WLAN 直连快速传输文件,传输过程不需要流量。
点击播放 GIF 0.7M
使用方法很简单,Huawei Share 使用 WLAN 和蓝牙来传输信息,打开 Huawei Share 开关后,WLAN 和蓝牙开关会自动打开。
使用 Huawei Share 给他人发送文件:从状态栏处向下滑动,打开通知面板,点击

打开 Huawei Share。选择要分享的文件,点击分享。发现附近的设备后,点击要接收文件的设备名称发送文件。

除了华为和荣耀手机之外,Android版本的AirDrop也有了统一标准。小米、OPPO、vivo、魅族、一加、realme和黑鲨组成了互传联盟,互传联盟虽然没有覆盖到所有品牌,但大家常见的国产智能手机都可以找到。如果你的手机是其中任何一个品牌下的,那么在传输照片、视频或者文档时就变得更加简单了。

互传功能可以不费流量轻松地将文件快速分享给附近的其他手机。 例如在相册选择照片(或者在文件管理选择文件),点击“发送”,弹出发送面板; 然后在接收方手机的控制中心打开互传的开关;此时,在发送方的发送界面就能看到接收方的头像,点击即可开始发送文件。
既然华为、荣耀未加入互传联盟,因此无法实现快速互传。由于华为自带Huawei Share功能,能够实现旗下手机端和PC端的快速传输,3.0 版本还推出了基于 NFC 的一碰即传功能。华为自有产品互传基本已做到全覆盖,但如果与其他国产手机进行互传,还需要靠网盘、社交软件和第三方快传软件来实现。
●iPhone与Android传输 似乎并不友好
最后一种传输组合,两端系统相对就不那么友好了。iPhone和Android本身属于两个不同操作系统,因此传输数据协议很难做到统一。

有网友说可以借助手机上的蓝牙传输,没错!单纯的蓝牙的确可以传输,不过速度,距离和稳定性肯定让你抓狂,有时候传输一张照片可能都很困难。
实际上,网盘、钉钉、QQ和微信这几种方法个人比较推荐使用,这些软件通用性比较高而且手机中基本都是必装软件。前提是如果你们手机上流量管够的话,其实iPhone和Android手机之间传输文件,尤其是高清图片和视频不会遇到太大的问题。
跨系统传输文件也可以借助快传类软件来实现,例如国内使用比较多的互传、闪传、快牙、茄子快传、AirDroid等。实现原理类似,就是用WiFi来传输文件。一般来说是用一个手机开启热点,另一个手机连接热点,然后利用快牙或茄子等APP快传来传输。

Ⅷ 安卓手机点住APP怎么没有分享按钮

桌面没有分享功能。
1、安卓手机点住APP怎么没有分享按钮是因为桌面没有分享功能。
2、可以点开该软件在右上角会有三个点,点进去就可以分享该软件了。

Ⅸ android app怎样实现微信分享

使用微信SDK分享WXAppExtendObject数据给好友,好友点击跳转MyApp的某个页面(需要在分享时传递构造跳转Intent的参数)。

1.该类型的分享(具体请参考微信分享SDK)可以带几个参数,参数中必须附带一些构造跳转Intent的数据。

2.好友点击分享的内容,回调IWXAPIEventHandler接口的类的onReq方法,具体为

ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:这种情况才会调用,此时可以取出分享时附带在参数中的一些数据,构造一个跳转Intent,调用startActivity(intent) 来打开MyApp。

由于是项目实测,这种实现方式的截图也就不传了。

问题1:该分享方式只能分享给好友,不能分享到朋友圈。

问题2:如果好友没安装MyApp,点击微信中好友分享过来的消息后无反应,无法提醒“未安装MyApp,请下载”,因为这些逻辑要实现的话本身就是在MyApp里面写的,原本没装的话根本无法检测。

问题3:WXAppExtendObject类型的分享,数据有大小限制,

extInfo(String)限制2KB;

fileData(byte[])供第三方使用的文件二进制数据,最大10M;

filePath:(String)Local directory of the file provided for applications,本身长度最大10KB,文件大小同上,不超过10M。

Ⅹ 安卓怎么传软件给苹果

以qq为例,其安卓给苹果传软件的方法是:1、首先确保自己的手机安装了QQ,并登录它;2、接着在手机上找到文件管理,点击打开它;3、然后在打开的页面,点一下要传送文件所在的文件夹,选中要传送的文件,然后点击菜单;4、随后选择分享,点击发送给好友。5、选择要发送文件的好友,然后点发送就可以了。这样就实现了安卓和Iphone手机间的文件传送。QQ(TencentQQ)是腾讯公司借鉴于ICQ开发的一款基于Internet的即时通信(IM)软件,于1999年2月推出,是中国的社交软件巨头。QQ支持在线聊天、视频通话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与多种通讯终端相连。腾讯QQ是8亿人在用的即时通讯软件,不仅可以在各类通讯终端上通过QQ聊天交友,还能进行免费的视频、语音通话,或者随时随地收发重要文件。

热点内容
使徒服务器什么时候更新 发布:2025-07-13 01:04:46 浏览:606
java通信方式 发布:2025-07-13 01:04:42 浏览:979
如何玩好云服务器 发布:2025-07-13 01:02:18 浏览:644
linux访问hive 发布:2025-07-13 01:00:34 浏览:386
中欧压缩机 发布:2025-07-13 00:53:13 浏览:832
国内我的世界电脑版服务器 发布:2025-07-13 00:51:31 浏览:898
qq黄钻设置隐身访问 发布:2025-07-13 00:50:56 浏览:100
苹果和安卓哪个看小说方便 发布:2025-07-13 00:20:25 浏览:756
网址访问量查询 发布:2025-07-13 00:13:25 浏览:977
thinkphp关掉缓存 发布:2025-07-12 23:44:01 浏览:88