I : 利用隐式Intent实现分享

   1、应用实现分享的功能

      

 1 /* 实现分享功能 */2         3         Intent intent = new Intent();4         intent.setAction(Intent.ACTION_SEND);5 6         // 分享文本7         intent.setType("text/plain"); // text/html ...8         intent.putExtra(Intent.EXTRA_SUBJECT, "我要分享");9         intent.putExtra(Intent.EXTRA_TEXT, "分享的内容");
10
11         // 分享本地图片
12         intent.setType("image/*");
13         File file = new File(Environment.getExternalStorageDirectory()+"/imgCache/a0.jpg"); 14 Uri uri = Uri.fromFile(file); 15  intent.putExtra(Intent.EXTRA_STREAM,uri); 16 17  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 18 startActivity(Intent.createChooser(intent, "分享列表"));

 2、应用加入系统的分享列表

 

 1  在AndroidManifest.xml文件中的<activity>标签下添加<Intent-filter>2 3  <activity4    android:name="com.example.demo_share_01.Leading"5    android:label="@string/app_name" >6             <intent-filter>7                 <action android:name="android.intent.action.SEND" />9                 <category android:name="android.intent.category.DEFAULT" />
10                 <data android:mimeType="image/*"/>
11             </intent-filter>
12   </activity>

 

 II :  利用ShareSDK第三方库实现分享

    以一键分享(新浪微博和腾讯微博)为例

   第一步: 在src文件夹下添加叫cn.sharesdk.onekeyshare包

   第二步: 在libs文件夹下添加库文件 

                        

  第三步:在assets文件夹下添加ShareSDK.xml文件

        

  ShareSDK.xml文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<DevInfor><!--说明:1、表格中的第一项<ShareSDK AppKey="api20" />是必须的,其中的AppKey是您在ShareSDK上注册的开发者帐号的AppKey2、所有集成到您项目的平台都应该为其在表格中填写相对应的开发者信息,以新浪微博为例:<SinaWeiboId="1"SortId="1"AppKey="568898243"AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"RedirectUrl="http://www.mob.com"Enable="true" />其中的SortId是此平台在分享列表中的位置,由开发者自行定义,可以是任何整型数字,数值越大越靠后AppKey、AppSecret和RedirectUrl是您在新浪微博上注册开发者信息和应用后得到的信息Id是一个保留的识别符,整型,ShareSDK不使用此字段,供您在自己的项目中当作平台的识别符。Enable字段表示此平台是否有效,布尔值,默认为true,如果Enable为false,即便平台的jar包已经添加到应用中,平台实例依然不可获取。各个平台注册应用信息的地址如下:新浪微博        http://open.weibo.com腾讯微博        http://dev.t.qq.comQQ空间          http://connect.qq.com/intro/login/微信好友        http://open.weixin.qq.comFacebook       https://developers.facebook.comTwitter        https://dev.twitter.com人人网          http://dev.renren.com开心网          http://open.kaixin001.com搜狐微博        http://open.t.sohu.com网易微博        http://open.t.163.com豆瓣           http://developers.douban.com有道云笔记      http://note.youdao.com/open/developguide.html#app印象笔记        https://dev.evernote.com/Linkedin       https://developer.linkedin.comFourSquare     https://developer.foursquare.com/搜狐随身看      https://open.sohu.com/Flickr         http://www.flickr.com/services/Pinterest      http://developers.pinterest.com/Tumblr         http://www.tumblr.com/developersDropbox        https://www.dropbox.com/developersInstagram      http://instagram.com/developer#VKontakte      http://vk.com/dev易信好友        http://open.yixin.im/明道            http://open.mingdao.com/Line           http://media.line.me/zh-hant/Pocket         http://getpocket.com/developer/apps/new--><ShareSDK AppKey = "426e34bef3d7"/> <!-- 修改成你在sharesdk后台注册的应用的appkey"--><!-- ShareByAppClient标识是否使用微博客户端分享,默认是false --><SinaWeiboId="1"SortId="1"AppKey="2073300154"AppSecret="a5f7b084ba7630688831f691e16d146b"RedirectUrl="https://api.weibo.com/oauth2/default.html"ShareByAppClient="false"Enable="true" /><TencentWeiboId="2" SortId="2"AppKey="801550161"AppSecret="d2c82a847a577af120857feee42548ea"RedirectUri="http://www.baidu.com"Enable="true" /></DevInfor>

 第四步:在AndroidManifest.xml文件中添加访问权限等配置信息

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.qf.sdemo_02_01_volley_news"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="12"android:targetSdkVersion="18" /><!-- 添加需要的各种权限 --><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /><uses-permission android:name="android.permission.GET_ACCOUNTS" /><!-- 蓝牙分享所需的权限 --><uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><supports-screensandroid:anyDensity="true"android:largeScreens="true"android:normalScreens="true"android:resizeable="true"android:smallScreens="true" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><!-- 主Activity --><activityandroid:name="com.qf.sdemo_02_01_volley_news.MainActivity"android:label="@string/app_name" >
<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name="com.qf.sdemo_02_01_volley_news.Detail" ></activity><!-- 进行授权界面的注册 --><activityandroid:name="cn.sharesdk.framework.ShareSDKUIShell"android:configChanges="keyboardHidden|orientation|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:windowSoftInputMode="stateHidden|adjustResize" ><!--Dropbox的SSO功能需要在此处添加一个对ACTION_VIEW事件的过滤器,其中的scheme是“db-”前缀再开发者应用的加上appKey。如果此过滤器不设置,则不能完成SSO功能授权--><intent-filter><data android:scheme="db-7janx53ilz11gbs" /><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.BROWSABLE" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><!--如果集成QQ分享,或者使用QQ客户端来进行QQ空间的分享,须要在此处添加一个对ACTION_VIEW事件的过滤器,其中的scheme是“tencent”前缀再开发者应用的加上appId。如果此过滤器不设置,则分享结束以后不能得到正确的回调--><intent-filter><data android:scheme="tencent100371282" /><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /></intent-filter></activity></application></manifest>

第五步:将官方Demo中的Sample工程下的res文件下的资源文件拷贝到自己的工程目录下

第六步: 在mob.com 、新浪微博开发平台 和腾讯微博开发平台创建应用获得 appkey 和 appsecrect ,并添加到ShareSDK.xml文件中

第七步: 写代码实现分享

   

  1 package com.qf.demo_sharesdk_01;
  2
  3 import java.util.HashMap;
  4
  5 import android.app.Activity;
  6 import android.os.Bundle;
  7 import android.util.Log;
  8 import android.view.View;
  9 import cn.sharesdk.framework.Platform;
 10 import cn.sharesdk.framework.PlatformActionListener;
 11 import cn.sharesdk.framework.ShareSDK;
 12 import cn.sharesdk.onekeyshare.OnekeyShare;
 13 import cn.sharesdk.sina.weibo.SinaWeibo;
 14 import cn.sharesdk.tencent.weibo.TencentWeibo;
 15
 16 public class MainActivity extends Activity {
 17
 18     @Override
 19     protected void onCreate(Bundle savedInstanceState) {
 20         super.onCreate(savedInstanceState);
 21         setContentView(R.layout.activity_main);
 22
 23         //注意:要初始化ShareSDK,不然指定分享会出错
 24         ShareSDK.initSDK(this);
 25     }
 26
 27     //一键分享到新浪和腾讯微博
 28     public void  onekeyShare(View v){
 29         OnekeyShare onekeyShare = new OnekeyShare();
 30         onekeyShare.setTitle("分享");
 31         onekeyShare.setText("分享的内容");
 32         //新浪暂不支持图片分享
 33 //        onekeyShare.setImageUrl("http://img4.duitang.com/uploads/blog/201306/23/20130623134809_2QhYF.jpeg");
 34         onekeyShare.show(this);
 35     }
 36
 37     //指定分享到新浪微博
 38     public void  share2Sina(View v){
 39         //第一步:创建平台对象
 40         Platform platform = ShareSDK.getPlatform(SinaWeibo.NAME);
 41         //第二步:给平台对象绑定监听器
 42         platform.setPlatformActionListener(new PlatformActionListener() {
 43
 44             @Override
 45             public void onError(Platform platform, int action, Throwable t) {
 46                 Log.v("TAG", "分享失败");
 47             }
 48
 49             @Override
 50             public void onComplete(Platform platform, int action, HashMap<String, Object> datas) {
 51                 if(action == Platform.ACTION_AUTHORIZING){
 52                     SinaWeibo.ShareParams params = new SinaWeibo.ShareParams();
 53                     params.setTitle("分享");
 54                     params.setText("分享的内容");
 55                     params.setAddress("http://www.baidu.com");
 56                     params.setAuthor("It's don !");
 57                     params.setComment("nice");
 58                     params.setContentType(TRIM_MEMORY_BACKGROUND);
 59                     params.text = "share content";
 60
 61                     platform.share(params);
 62                 }else if(action == Platform.ACTION_SHARE){
 63                     Log.v("TAG", "分享成功");
 64                 }
 65             }
 66
 67             @Override
 68             public void onCancel(Platform platform, int action) {
 69                 Log.v("TAG", "分享取消");
 70             }
 71         });
 72
 73         //第三步:给平台对象授权
 74         platform.authorize();
 75     }
 76
 77     //指定分享到腾讯微博
 78     public void share2Tencent(View v){
 79         //第一步:
 80         Platform platform = ShareSDK.getPlatform(TencentWeibo.NAME);
 81         //第二步:
 82         platform.setPlatformActionListener(new PlatformActionListener() {
 83
 84             @Override
 85             public void onError(Platform platform, int action, Throwable t) {
 86                 Log.v("TAG","分享失败");
 87             }
 88
 89             @Override
 90             public void onComplete(Platform platform, int action, HashMap<String, Object> datas) {
 91                 if(action == Platform.ACTION_AUTHORIZING){
 92                     TencentWeibo.ShareParams params = new TencentWeibo.ShareParams();
 93                     params.text = "T-MAC";
 94                     params.setTitle("我要分享");
 95                     params.setText("Tracy Mcgrady");
 96                     params.setImageUrl("http://image.hoopchina.com/nba/desktop/%5Bwww.hoopchina.com%5D20100311-tmac-1.jpg");
 97
 98                     platform.share(params);
 99                 }else if(action == Platform.ACTION_SHARE){
100                     Log.v("TAG", "分享成功");
101                 }
102             }
103
104             @Override
105             public void onCancel(Platform platform, int action) {
106                 Log.v("TAG", "取消分享");
107             }
108         });
109
110         //第三步:
111         platform.authorize();
112     }
113
114
115 }

View Code

转载于:https://www.cnblogs.com/d-on/p/4085167.html

Android 分享功能的实现相关推荐

  1. Android实现分享代码,Android 分享功能的实现代码

    Android 分享功能的实现代码 一个Activity中,取出设备上安装的所有支持分享动作的Activity,在grid中显示. 实例代码: /** * 分享activity */ public c ...

  2. Android 分享功能之 微信 图片分享

    前言:如果 有关 QQ好友 纯文本分享的问题 ,可点查看 Android 分享功能实现与 QQ 纯文本分享. 我们都知道,通过 微信官方 分享sdk 支持图片分享,而且有多种方式.官方链接 可直接查看 ...

  3. Android分享功能,微博、QQ、QQ空间等社交平台分享之入门与进阶

    前言 如何能迅速做一个分享功能,那主要就是根据第一个步骤来做就好了,因为友盟的sdk包已经集成很多的内容了,只要你有相应的app和平台账号就可以能马上分享.进阶的内容就是从第三部分开始,这些内容不难, ...

  4. android视频分享功能吗,Unity 调用 Android 分享功能(基于ShareRec SDK视频分享)

    需求 Mob 平台是一个强大的提供分享功能的平台,为移动开发者提供 ShareSDK 社交分享.ShareREC 手游录像分享.短信验证码 SDK 及 BigApp 等免费服务. Unity 使用 S ...

  5. Android分享功能的一点总结

    前段时间给曾经的App加了分享功能,与大家分享一些心得. 实现分享功能有三种方式: 1.调用Android自带的分享接口.这样的方式最简单.它是直接调用App的发信息功能,把我们的链接通过信息方式发出 ...

  6. Android分享功能

    Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("video/*"); File file = new ...

  7. Android 分享功能大全

    实现效果:            实现步骤: 1.配置SDK 2. 配置平台SDK demo云盘链接:https://pan.baidu.com/s/1DRr85PKtVpuexfyCc2jwsg 在 ...

  8. android开发中调用手机的豌豆荚、应用宝等市场进行评分操作,以及分享功能

    应用场景:某个手机阅读器程序,读者看到一篇 文章 ,觉得不错,想要与朋友分享  .  应用展现:按手机的Menu键,弹出"分享"菜单,点击后显示一系列Android分享功能的方式( ...

  9. Android中最简单的分享功能

    最近做的项目中遇到了需要在项目中添加分享功能.有些是分享到微博,有些是分享到微信,有些是分享到QQ等等吧.对于一些相对来说比较成熟的应用如上三种好办其实,只要在相应的官网上去注册一个ID或是Key之类 ...

最新文章

  1. ecshop简单三部实现导航分类二级菜单
  2. PHP - 如何在函数内访问另一个文件中的变量
  3. Python网络请求urllib和urllib3详解
  4. KnockoutJS 3.X API 第一章 简介
  5. java当数值超过byte时_java试题及答案
  6. ES6 模块化操作
  7. 在搜索框自动输入文本_Selenium 时间搜索框查询和日期大小比较
  8. npm 安装less插件_node+npm+webpack+less安装
  9. windows下使用MinGW+msys编译ffmpeg
  10. asp.net的常用控件
  11. python 循环播放音乐_python gstreamer实现视频快进/快退/循环播放功能
  12. 【转】URL和URI的区别
  13. 吐血整理的几十款小程序登陆界面【附完整代码】
  14. Win10重装系统后的lockdir解密失败
  15. iOS人脸识别Demo
  16. 钉钉小程序获取用户信息
  17. LINUX操作系统centos安装
  18. 如何实现Builder模式
  19. python面向过程学习笔记
  20. 张勋说:棒磨机断棒的几个可能原因

热门文章

  1. mosquitto服务器搭建及配置
  2. java 实现图片截取功能
  3. 抽象、封装、继承、多态--基本理解
  4. Python for 循环遍历字符串
  5. 2017-2018-2 20179204《网络攻防实践》linux基础
  6. 区块链 - DAPP
  7. 配上新的pip源再来安装pytorch有如神助
  8. 信号与系统——傅里叶变换☞一维信号
  9. VLAN原理和配置,交换机创建vlan的多种方法、三种接口模式的作用和配置方法、Access、Trunk、Hybrid接口的特性以及配置方法和命令
  10. C语言编程>第三周 ⑦ 将一个数组逆序输出。