Android 分享功能的实现
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 分享功能的实现相关推荐
- Android实现分享代码,Android 分享功能的实现代码
Android 分享功能的实现代码 一个Activity中,取出设备上安装的所有支持分享动作的Activity,在grid中显示. 实例代码: /** * 分享activity */ public c ...
- Android 分享功能之 微信 图片分享
前言:如果 有关 QQ好友 纯文本分享的问题 ,可点查看 Android 分享功能实现与 QQ 纯文本分享. 我们都知道,通过 微信官方 分享sdk 支持图片分享,而且有多种方式.官方链接 可直接查看 ...
- Android分享功能,微博、QQ、QQ空间等社交平台分享之入门与进阶
前言 如何能迅速做一个分享功能,那主要就是根据第一个步骤来做就好了,因为友盟的sdk包已经集成很多的内容了,只要你有相应的app和平台账号就可以能马上分享.进阶的内容就是从第三部分开始,这些内容不难, ...
- android视频分享功能吗,Unity 调用 Android 分享功能(基于ShareRec SDK视频分享)
需求 Mob 平台是一个强大的提供分享功能的平台,为移动开发者提供 ShareSDK 社交分享.ShareREC 手游录像分享.短信验证码 SDK 及 BigApp 等免费服务. Unity 使用 S ...
- Android分享功能的一点总结
前段时间给曾经的App加了分享功能,与大家分享一些心得. 实现分享功能有三种方式: 1.调用Android自带的分享接口.这样的方式最简单.它是直接调用App的发信息功能,把我们的链接通过信息方式发出 ...
- Android分享功能
Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("video/*"); File file = new ...
- Android 分享功能大全
实现效果: 实现步骤: 1.配置SDK 2. 配置平台SDK demo云盘链接:https://pan.baidu.com/s/1DRr85PKtVpuexfyCc2jwsg 在 ...
- android开发中调用手机的豌豆荚、应用宝等市场进行评分操作,以及分享功能
应用场景:某个手机阅读器程序,读者看到一篇 文章 ,觉得不错,想要与朋友分享 . 应用展现:按手机的Menu键,弹出"分享"菜单,点击后显示一系列Android分享功能的方式( ...
- Android中最简单的分享功能
最近做的项目中遇到了需要在项目中添加分享功能.有些是分享到微博,有些是分享到微信,有些是分享到QQ等等吧.对于一些相对来说比较成熟的应用如上三种好办其实,只要在相应的官网上去注册一个ID或是Key之类 ...
最新文章
- ecshop简单三部实现导航分类二级菜单
- PHP - 如何在函数内访问另一个文件中的变量
- Python网络请求urllib和urllib3详解
- KnockoutJS 3.X API 第一章 简介
- java当数值超过byte时_java试题及答案
- ES6 模块化操作
- 在搜索框自动输入文本_Selenium 时间搜索框查询和日期大小比较
- npm 安装less插件_node+npm+webpack+less安装
- windows下使用MinGW+msys编译ffmpeg
- asp.net的常用控件
- python 循环播放音乐_python gstreamer实现视频快进/快退/循环播放功能
- 【转】URL和URI的区别
- 吐血整理的几十款小程序登陆界面【附完整代码】
- Win10重装系统后的lockdir解密失败
- iOS人脸识别Demo
- 钉钉小程序获取用户信息
- LINUX操作系统centos安装
- 如何实现Builder模式
- python面向过程学习笔记
- 张勋说:棒磨机断棒的几个可能原因