Android应用中使用及实现系统“分享”接口实例_Android

为了应用的推广、传播,很多的应用中都有“分享”功能,一个按钮,点击后会出现短信、微博等等一切实现了分享功能的应用列表。这一篇文章主要介绍怎么调用分享功能和怎么实现分享接口让自己应用出现分享列表中。Android应用中能很方便的完成这些功能,这也正是Android的伟大之处,他能很简单的完成应用之间的沟通以相互整合。

调用分享功能

1、分享文本

分享功能使用的隐式启动Activity的方法,这里的Action使用的是 ACTION_SEND。

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent); 

效果如下图的图一。

2、改变分享列表标题

使用上面的分享方式分享列表标题为“使用一下内容完成操作”,Android中提供了Intent.createChooser() , 这样能一直显示分享选择列表,并且修改了分享列表标题内容。

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));

使用Intent.createChooser()的好处:

If you callIntent.createChooser() for the intent, Android will always display the chooser. This has some advantages:

  • Even if the user has previously selected a default action for this intent, the chooser will still be displayed.
  • If no applications match, Android displays a system message.
  • You can specify a title for the chooser dialog.

           

分享功能不只是Intent.EXTRA_TEXT,还可以 EXTRA_EMAIL ,EXTRA_CC , EXTRA_BCC  ,EXTRA_SUBJECT . 只需要接受方完成响应数据接受。

3、分享图片

分享功能还支持二进制内容(Binary Content),但是多数是处理的图片,因为shareIntent.setType("image/jpeg")这一项设置了内容类型。可也以是其他类型,需要接受方支持。

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))); 

4、分享图片列表

分享功能不仅支持单张图片,还支持图片列表,这里还是说的范围太窄了,应该声明不仅仅是图片。

ArrayList<Uri> imageUris = new ArrayList<Uri>();
imageUris.add(imageUri1); // Add your image URIs here
imageUris.add(imageUri2); 

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share images to..")); 

实现分享功能

上面说的都是怎么调用分享功能,以下就开始写怎么实现分享功能,让我们的应用也出现在分享列表中。前面也说了分享功能是使用隐式调用Activtiy实现的,Activity需要声明 <intent-filter> 。

声明intent-filter

<activity
      android:name="com.example.sharedemo.ShareActivity"
      android:label="@string/app_name" >
      <intent-filter>
        <action android:name="android.intent.action.SEND" /> 

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

        <data android:mimeType="image/*" />
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.SEND" /> 

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

        <data android:mimeType="text/plain" />
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.SEND_MULTIPLE" /> 

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

        <data android:mimeType="image/*" />
      </intent-filter>
    </activity>

上面声明了三种intent-filter,当然可以更多,这里只是举个例子,

处理接收数据
声明了intent-filter,响应的Activity就要处理响应的数据,示例如下:

public class ShareActivity extends Activity{ 

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState); 

    // Get intent, action and MIME type
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType(); 

    if (Intent.ACTION_SEND.equals(action) && type != null) {
      if ("text/plain".equals(type)) {
        handleSendText(intent); // Handle text being sent
      } else if (type.startsWith("image/")) {
        handleSendImage(intent); // Handle single image being sent
      }
    } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
      if (type.startsWith("image/")) {
        handleSendMultipleImages(intent); // Handle multiple images being sent
      }
    } else {
      // Handle other intents, such as being started from the home screen
    }
  } 

  void handleSendText(Intent intent) {
    String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
    String sharedTitle = intent.getStringExtra(Intent.EXTRA_TITLE);
    if (sharedText != null) {
      // Update UI to reflect text being shared
    }
  } 

  void handleSendImage(Intent intent) {
    Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
    if (imageUri != null) {
      // Update UI to reflect image being shared
    }
  } 

  void handleSendMultipleImages(Intent intent) {
    ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
    if (imageUris != null) {
      // Update UI to reflect multiple images being shared
    }
  }
}

通过声明intent-filter,处理接受到的数据就能完成分享的接收功能。

更多

上面只做了分享功能简单的说明,伴随着Android api的升级,也出现了一些新的完成“分享”功能的方法,比如 ShareActionProvider ,更多请参考。

demo下载:demo

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
调用系统分享
微信分享接口开发实例、微信分享接口实例、实现http接口调用实例、java实现微信分享接口、安卓实现系统分享,以便于您获取更多的相关知识。

时间: 2024-09-27 03:28:27

Android应用中使用及实现系统“分享”接口实例_Android的相关文章

Android应用中使用及实现系统“分享”接口实例

为了应用的推广.传播,很多的应用中都有"分享"功能,一个按钮,点击后会出现短信.微博等等一切实现了分享功能的应用列表.这一篇文章主要介绍怎么调用分享功能和怎么实现分享接口让自己应用出现分享列表中.Android应用中能很方便的完成这些功能,这也正是Android的伟大之处,他能很简单的完成应用之间的沟通以相互整合. 调用分享功能 1.分享文本 分享功能使用的隐式启动Activity的方法,这里的Action使用的是 ACTION_SEND. Intent sendIntent = ne

Android应用中实现系统“分享”接口

在android下各种文件管理器中,我们选择一个文件,点击分享可以看到弹出一些app供我们选择,这个是android系统分享功能,我们做的app也可以出现在这个列表中. 第一步:在Manifest.xml进行配置,比普通的activity中多增加一个Intent过滤器   <activity         android:name="com.example.share.MainActivity"         android:label="@string/app_n

在Android Studio中使用shareSDK进行社会化分享(图文教程)

[前言] 如今的app当中,几乎都包含了社会化分享的功能,来两张图see 一 see: 好在这种分享功能已经有第三方平台帮我们做好了,我们直接调用其SDK即可.市面上做社会化分享平台的比较好平台的有:mob等. 今天我们就用mob的平台做分享吧,官网地址是:http://www.mob.com/ 怎么样?光看这个网站的首页就碉堡了吧?好了不废话,进入正题.   开发环境: IDE版本:Android Studio 1.2 物理机版本:Win7旗舰版(64位)   一.获取SDK并解压: 打开网站

Android开发中应用程序分享功能实例_Android

本文实例讲述了Android开发中应用程序分享功能.分享给大家供大家参考,具体如下: Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); //设置类型 shareIntent.setType("text/plain"); //设置分享的主题 shareIntent.putExtra("android.intent.extra.SUBJECT", "分享&

百度云Android版中的文件浏览方法分享

给各位百度云软件的用户们来详细的解析分享一下百度云Android版中的文件浏览的方法. 方法分享: 对于云端数据,根据文件类型系统自动将其进行了分类,主要分为,图片,文档,音乐,视频,应用,其它几大类.在百度云首页面点击我的百度云,选择相应的类型,可以浏览该类型的所有文件. 百度云支持列表视图及缩略图视图,可按menu键来进行列表视图和缩略图视图的切换. 百度云是百度公司在开放自身的核心云能力(包括云存储.云计算和大数据智能)的基础上,为广大开发者和最终用户提供的一系列云服务和产品.其服务的对象

Android系统中使用shareuserid获取系统权限的教程_Android

Android会为每个apk进程分配一个单独的空间(比如只能访问/data/data/自己包名下面的文件),一般情况下apk之间是禁止相互访问数据的.通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样(使用IPC机制,不同进程之间,比如AIDL). 一.使用同一个shareuserid,多个apk运行到同一

Android编程中关于单线程模型的理解与分析_Android

本文讲述了Android编程中关于单线程模型的理解与分析.分享给大家供大家参考,具体如下: 当一个Android程序启动时,Android系统会同时启动一个对应的主线程(Main Thread). 由于这个主线程(Main Thread)主要的任务就是对UI相关的事件进行处理(例如显示文本,处理点击事件,显示图片等),系统对每一个组件的调用都是从主线程中分发出去的,所以又常被称为UI线程. IMP,Android单线程模型的核心原则就是:只能在UI线程(Main Thread)中对UI进行处理.

Android App中实现向右滑动销毁功能的要点解析_Android

今天给大家带来一个向右滑动销毁Activity的效果,Activtiy随着手指的移动而移动,该效果在Android应用中还是比较少见的,在IOS中就比较常见了,例如"网易新闻" ,"美食杰" , "淘宝"等应用采用此效果,而Android应用中"知乎"采用的也是这种滑动切换Activity的效果, 不过我发现"淘宝"并没有随着手势的移动而移动,只是捕捉到滑动手势,然后产生平滑切换界面的动画效果,这个在And

Android编程中常用适配器及自定义适配器用法实例分析_Android

本文实例讲述了Android编程中常用适配器及自定义适配器用法.分享给大家供大家参考,具体如下: 一.适配器. 顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示.可以看作是界面数据绑定的一种理解.它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等.适配器就像显示器,把复杂的东西按人可以接受的方式来展现. 那么适配器是怎么处理得到的数据,并把它显示出来的呢.其实很简单,说白了适配器它也是一个类,在类里面它实现了父类的这几个方法: publicint getCoun