Android轻松实现分享功能

简介: Android轻松实现分享功能

在Android开发中,要实现分享功能,可能首先想到第三方的ShareSDK,其实,想要分享一些图片,文本之类的完全没必要在App中集成第三方SDK,利用原生的SDK就可以轻松实现分享功能。

Activity的跳转方式

  众所周知,Activity的跳转方式分为两种,分别为显示跳转隐式跳转

显示跳转

  显示跳转比较简单,直接看代码

Intent intent=new Intent(MainActivity.this, OtherActivity.class); 
startActivity(intent);

隐式跳转

  隐式跳转复杂一点,同样,先看下代码

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType("image/jpeg");
startActivity(shareIntent);

可以看到隐式跳转Activity不像显示跳转那样,直接在Intent中设置类名进行跳转。隐式跳转的步骤如下

  1. 实例化Intent。
  2. 设置Action。
  3. 设置Extra(可选)。
  4. 设置类型(可选)
  5. 通过startActivity启动相应的Activity。

步骤2中的setAction(),其中需要的参数是,你要跳转的目标Activity所设置的Action,设置Action可以在AndroidManifest.xml中进行设置。setAction()中的参数就是过滤条件,决定我们跳转到哪个Activity。同样,setType()中的参数也是过滤条件,如果说setAction()是一级过滤,那么setType()则是二级过滤,过滤的更加细致。putExtra()中的参数,就是跳转到目标Activity携带的参数。

  了解过了Activity的跳转方式,下面就进入本文的重点,为软件实现分享功能。

实现分享功能

分享图片

  由于需要调用系统的Activity,所以,我们只能选择Activity的隐式跳转方式,先看下实现分享图片的代码

public static void shareImage(Context context, Uri uri, String title) {
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        shareIntent.setType("image/jpeg");
        context.startActivity(Intent.createChooser(shareIntent, title));
    }

这里主要说一下其中的一些参数,uri就是你要分享的图片的路径,title就是分享时显示的文字,额…,为了不让大家误解,下面看一张图,图中红框标起来的就是title

ad50f3c61c9df444cffe821b9e33048.png

再来看一下这个代码

Intent.createChooser(shareIntent, title)

官方文档的介绍如下

Builds a new ACTION_CHOOSER Intent that wraps the given target intent, also optionally supplying a title.

上面一段话的主要意思就是,就是为目标Activity提供一个标题。

分享文本

  文本分享和图片分享大同小异,直接看代码

public static void shareText(Context context, String extraText) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.action_share));
        intent.putExtra(Intent.EXTRA_TEXT, extraText);//extraText为文本的内容
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//为Activity新建一个任务栈
        context.startActivity(
                Intent.createChooser(intent, context.getString(R.string.action_share)));//R.string.action_share同样是标题

其中与分享图片不同的代码已经在代码中进行了注释。

实现可以被系统分享调用的App

  以上实现了,通过系统调用其他的App进行分享,那么,我们怎样让自己的App可以被系统列入可以分享的App呢?

其实很简单,只要在AndroidManifest.xml中Activity的action标签设置以下值即可

android.intent.action.SEND

看下示例代码

<activity android:name=".ShareActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEND"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

这样,在系统调用可以用来分享的App时,我们的软件就会出现在列表中了。

结束语




相关文章
|
Web App开发 存储 Java
android11.0(R) 谷歌浏览器去除短信分享功能
android11.0(R) 谷歌浏览器去除短信分享功能
244 0
|
Android开发
Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow
原文:Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow 这是一张QQ空间说说详情的截图。 分析: 1、点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2、当该区域出现的时候,详情界面便灰了,也说成透明度变...
929 0
|
数据安全/隐私保护 Android开发
|
Android开发
Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow
这是一张QQ空间说说详情的截图。 分析: 1、点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2、当该区域出现的时候,详情界面便灰了,也说成透明度变化了 3、当任意选了一个按钮或者点击了该区域以外的部分,该区域消失,灰色界面变回亮白色,并执行点击的按...
1115 0
|
Android开发
Android开发之社会化分享功能集成
现在越来越多的应用都集成了社交分享功能,国内用的比较多的就是 友盟和Mob 分享,今天以Mob分享为例,来完整介绍一个集成的案例。 1. 获取ShareSDK的AppKey,去官方添加一个Project就得到了 2.
1085 0
|
3天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
8天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
10天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
下一篇
无影云桌面