ShareSDK安卓分享到sharesdk新浪微博分享,怎么自定义分享界面

今天看啥 热点:
在Android Studio中使用shareSDK进行社会化分享(图文教程),【声明】&
欢迎转载,但请保留文章原始出处&_&&
生命壹号:/smyhvae/
文章来源:/smyhvae/p/4585340.html
联系方式:&
如今的app当中,几乎都包含了社会化分享的功能,来两张图see 一 see:
好在这种分享功能已经有第三方平台帮我们做好了,我们直接调用其SDK即可。市面上做社会化分享平台的比较好平台的有:mob等。
今天我们就用mob的平台做分享吧,官网地址是:/
ShareSDK for Android&目录下,此目录中的&Libs&包含了&MainLibs&文件夹(核心库)和&OnekeyShare&文件夹(快捷分享库)。截图如下:
App Key要记住,因为我们稍后要用。
单击红框部分的&应用信息&,可以添加一些信息,这些信息可有可无哈。
二、在各大社交平台注册:
如果你想分享到新浪微博,就必须在新浪开放平台上将这个app注册一下,不然新浪是不会无缘无故让你分享的;分享到微信和QQ的道理是一样的。
参考链接:
ShareSDK各社交平台申请APPkey 的网址及申请流程汇总:/forum.php?mod=viewthread&tid=275
1、新浪开放平台注册:
参考链接:/thread-89-1-4.html
登陆微博开放平台:/
图文操作如下:
我们采用新建Library module的方式来导入SDK。当然了,如果你非要用复制jar包的方式来做,可以参考官方链接:/Index/mediaItem/id/158
还记得新建Library module以及引用library的步骤吗?不清楚的话,可以去参考本人之前的博文:这里重复一下,新建一个module形式的第三方library的通用步骤是:
新建一个library形式的module,删掉这个module中src/main目录里面的所有文件(包括删掉java、res、AndroidManifest.xml)
复制第三方库的AndroidMainfest.xml、res、src文件(夹)到库目录的src/main目录中
将src/main目录下的src目录重命名(Shift+F6)为java
OneKeyShare这个module是依赖于ShareSDK这个module;而app这个module是依赖于OneKeyShare这个module。
2、添加应用信息:
先在app这个module(即我们这个项目的module)下新建一个assets文件夹(即第三方资产目录),操作如下:
AppKey = "修改成你在sharesdk后台注册的应用的appkey"/&
&!-- ShareByAppClient标识是否使用微博客户端分享,默认是false --&
&SinaWeibo
(自定义字段,整型,用于您项目中对此平台的识别符)
SortId="1"
(此平台在您分享列表中的位置,整型,数值越大越靠后)
(填写您在新浪微博上注册到的AppKey)
AppSecret="38a4ff9f0daaf31e02e3"
(填写您在新浪微博上注册到的AppSecret)
RedirectUrl=""
(填写您在新浪微博上注册的RedirectUrl)
ShareByAppClient="false"
(是否使用客户端进行分享)
Enable="true" /&
(布尔值,标记此平台是否有效)
代码解释:
&&& 02行:还记得之前说过AppKey有用吗?这里就派上用场了,填上去就行了。
&&& 08行:需要先事先在新浪微博的开发者平台注册得到AppKey。也就是上面第三段中提到的内容。
&&& 12行:如果不想用这个分享平台,可以将其设置为false。
ShareSDK的每一个平台都具备SortId、Id、Enable字段,除此之外的字段(如新浪微博的AppKey、AppSecret、RedirectUrl、ShareByAppClient等字段)需要到目标平台上注册应用以后得到,请正确填写这些字段的数据,否则ShareSDK无法完成授权,则后续的其它操作也将无法执行。
3、配置AndroidManifest.xml:
(1)添加如下权限:(和application节点并列)
&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"/&
(2)在application节点下注册下面的Activity:
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" &
&intent-filter&
&data android:scheme="tencent" /&
&action android:name="android.intent.action.VIEW" /&
&category android:name="android.intent.category.BROWSABLE" /&
&category android:name="android.intent.category.DEFAULT" /&
&/intent-filter&
&/activity&
注意: MobUIShell的路径是固定的,一定要在&cn.sharesdk.framework&下,因为它在Share-Core中。
之后,需要对上面的代码进行以下修改:
如果项目集成了微信,还需要添加以下WXEntryActivity,不然的话,mob后台无法做微信的分享统计:(在工程的包下新建wxapi目录再放置WXEntryActivity)
WXEntryActivity.java的代码如下:
* 官网地站:
* 技术支持QQ:
* 官方微信:ShareSDK
(如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
* Copyright (c) 2013年 . All rights reserved.
8 package com.smyhvae.sharedemo.
9 import android.content.I
10 import android.widget.T
11 import cn.sharesdk.wechat.utils.WXAppExtendO
12 import cn.sharesdk.wechat.utils.WXMediaM
13 import cn.sharesdk.wechat.utils.WechatHandlerA
14 /** 微信客户端回调activity示例 */
15 public class WXEntryActivity extends WechatHandlerActivity {
* 处理微信发出的向第三方应用请求app message
* 在微信客户端中的聊天页面有&添加工具&,可以将本应用的图标添加到其中
* 此后点击图标,下面的代码会被执行。Demo仅仅只是打开自己而已,但你可
* 做点其他的事情,包括根本不打开任何页面
public void onGetMessageFromWXReq(WXMediaMessage msg) {
Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName());
startActivity(iLaunchMyself);
* 处理微信向第三方应用发起的消息
* 此处用来接收从微信发送过来的消息,比方说本demo在wechatpage里面分享
* 应用时可以不分享应用文件,而分享一段应用的自定义信息。接受方的微信
* 客户端会通过这个方法,将这个信息发送回接收方手机上的本demo中,当作
* 本Demo只是将信息展示出来,但你可做点其他的事情,而不仅仅只是Toast
public void onShowMessageFromWXReq(WXMediaMessage msg) {
if (msg != null && msg.mediaObject != null
&& (msg.mediaObject instanceof WXAppExtendObject)) {
WXAppExtendObject obj = (WXAppExtendObject) msg.mediaO
Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();
同时,在清单文件中进行声明:
&!--微信分享回调--&
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/&
如果项目继承了易信,方法类似,这里就不贴出来了,现在谁还用易信啊,哈哈哈&&&
4、添加代码:
集成ShareSDK至少需要在两个位置添加代码,包括:
(1)在项目的入口Activity,在其onCreate方法中插入下面的代码进行初始化:(这个方法越早调用越好)
ShareSDK.initSDK(this);
如果不在所有的ShareSDK的操作之前调用这行代码,就会抛出空指针异常。
(2)在项目出口Activity的onDestroy方法中第一行插入下面的代码:
ShareSDK.stopSDK(this);
&上方这行代码会结束ShareSDK的统计功能并释放资源。如果这行代码没有被调用,那么&应用启动次数&将会不准确,因为应用可能从来没有被关闭过(注:这一行代码我还是没用到,不知道会造成什么实质性的后果)。
注意:initSDK是可以重复调用的,其实ShareSDK建议在不确定的时候调用这个方法来保证ShareSDK被正确初始化。而stopSDK一旦被调用了,就必须重新调用initSDK才能使用ShareSDK的功能,否则会出现空指针异常。
在代码中调用此方法,即可打开一键分享功能进行分享:
1 private void showShare() {
ShareSDK.initSDK(this);
OnekeyShare oks = new OnekeyShare();
//关闭sso授权
oks.disableSSOWhenAuthorize();
6 // 分享时Notification的图标和文字
2.5.9以后的版本不调用此方法
//oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));
// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
oks.setTitle(getString(R.string.share));
// titleUrl是标题的网络链接,仅在人人网和QQ空间使用
oks.setTitleUrl("");
// text是分享文本,所有平台都需要这个字段
oks.setText("我是分享文本,啦啦啦~");
// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片
// url仅在微信(包括好友和朋友圈)中使用
oks.setUrl("");
// comment是我对这条分享的评论,仅在人人网和QQ空间使用
oks.setComment("我是测试评论文本");
// site是分享此内容的网站名称,仅在QQ空间使用
oks.setSite(getString(R.string.app_name));
// siteUrl是分享此内容的网站地址,仅在QQ空间使用
oks.setSiteUrl("");
24 // 启动分享GUI
oks.show(this);
上面的这些代码是官方给的,实际项目中可以放在按钮的点击事件中,根据需要去填写。
代码解释:
&&& 14行:setText是需要分享的文本内容
&&& 16行:setImagePath是需要分享的本地图片。(如果是在真机当中,需要通过api去拿sd卡的路径,即Environment.getExternalStorageDirectory()这个api)
五、正式开始写代码:
(1)activity_main.xml布局文件:
&LinearLayout xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"&
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"/&
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="分享按钮"/&
&/LinearLayout&
其实就是加了个button按钮,用做分享的事件触发。
(2)ShareSDK.xml中和新浪微博、微信、QQ有关的配置:
新浪微博:
&SinaWeibo
AppSecret="72d0fb99e35a7ba25364"
Enable="true"
RedirectUrl=""
ShareByAppClient="true"
SortId="1"/&
02行和03行的AppKey和AppSecret要换成你自己在新浪开放平台注册的信息。
06行:RedirectUrl里面的网址要改成可用的url地址,并且与新浪开放平台的授权回调页的网址一致,也就是下面这个:(在第三段中已经强调过了)
1 package com.smyhvae.
3 import android.app.A
4 import android.os.B
5 import android.view.V
6 import android.widget.B
8 import cn.sharesdk.framework.ShareSDK;
9 import cn.sharesdk.onekeyshare.OnekeyS
12 public class MainActivity extends Activity implements View.OnClickListener {
private Button button1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(this);
//点击按钮,开始进行分享
public void onClick(View v) {
ShareSDK.initSDK(this);
OnekeyShare oks = new OnekeyShare();
//关闭sso授权
oks.disableSSOWhenAuthorize();
// title标题:微信、QQ(新浪微博不需要标题)
oks.setTitle("我是分享标题");
//最多30个字符
// text是分享文本:所有平台都需要这个字段
oks.setText("我是分享文本,啦啦啦~/");
//最多40个字符
// imagePath是图片的本地路径:除Linked-In以外的平台都支持此参数
//oks.setImagePath(Environment.getExternalStorageDirectory() + "/meinv.jpg");//确保SDcard下面存在此张图片
//网络图片的url:所有平台
oks.setImageUrl("1.z0./CYSJ_02.jpg");//网络图片rul
// url:仅在微信(包括好友和朋友圈)中使用
oks.setUrl("");
//网友点进链接后,可以看到分享的详情
// Url:仅在QQ空间使用
oks.setTitleUrl("");
//网友点进链接后,可以看到分享的详情
// 启动分享GUI
oks.show(this);
&第39行中,如果不想用本地的图片,而是采用分享网络的图片,可以将这一行去掉,改为第42行。
提示:如果imagePath和imageUrl同时存在,imageUrl将被忽略。
六、运行效果:
1、分享到新浪微博:(不采用客户端进行分享的方式)
运行效果如下:
&第一次分享时,系统会弹出页面让你填写你自己的新浪微博账号,我第一次运行的时候已经填写过了。
现在打开新浪微博,分享成功了:
什么?你觉得分享的图片太小了不够刺激?那点开大图爽一下吧:(确实是分享成功了滴)
setText属性对应的是:&我是分享文本,啦啦啦~&
setImagePath属性对应的是需要分享的图片,也就是上图中的大美女。
2、分享到新浪微博:(采用客户端进行分享的方式)
运行之后,进行分享操作的界面如下:
分享成功之后的效果如下:
上图的左下角显示的是说&来自未通过审核应用&,但有时候会显示手机的名字,很奇怪吧?咨询了一下官方客服(官方客服的解答太耐心了,感激涕零),情况是这样的:
如果不用客户端进行分享(即ShareByAppClient="false"):
  app在新浪开放平台没通过审核,就会显示&未通过审核应用&
  app在新浪开放平台通过了审核,就会显示具体的app的名字
如果用客户端进行分享(即ShareByAppClient="true"):
  app在新浪开放平台没通过审核,就会显示&未通过审核应用&或者手机型号
  app在新浪开放平台通过了审核,显示的是手机型号。效果如下:
3、分享到微信:
我这里采用的是不绕过审核的方式来进行分享(即ShareSDK.xml中关于微信的部分中,BypassApproval="false")。一般也是采取这种方式进行分享的吧。到底要不要绕过,看官网博客便知:
  &微信分享(对比及配置):/index.php/share/index/mediaItem/id/112
提示:记得要将生成签名的apk安装到手机,不然无法分享到微信哦(好吧,仔细看微信开放平台的注册流程就行了)。
3.1& 分享到微信好友:
留在微信后,效果如下:
3.2 分享到微信朋友圈:
4、分享到QQ、QQ空间:(和分享到微信的过程和界面一致)
运行效果:
4.1、分享到QQ好友:
4.2、分享到QQ空间:
动态效果图如下:
如果你还需要做一些细微的调整,那就需要多看官方的东西了,这里贴出两个链接:
官网博客:&/index.php/share/index/media/cid/11
【ShareSDK】常见问题汇总:/forum.php?mod=viewthread&tid=30&extra=page%3D1
【工程文件】
-ShareSDK做分享功能.rar
暂无相关文章
相关搜索:
相关阅读:
相关频道:
Android教程最近更新ShareSDKDemo 最全的分享功能,新浪微博,QQ空间,人人网 android 238万源代码下载-
&文件名称: ShareSDKDemo
& & & & &&]
&&所属分类:
&&开发工具: Java
&&文件大小: 4670 KB
&&上传时间:
&&下载次数: 20
&&提 供 者:
&详细说明:最全的分享功能,新浪微博,QQ空间,人人网-Most complete sharing, Sina microblogging, QQ space, Renren
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&ShareSDKDemo\.classpath&&............\.project&&............\.settings\org.eclipse.core.resources.prefs&&............\AndroidManifest.xml&&............\assets\ShareSDKDevInfor.xml&&............\bin\aidl\com\sina\sso\RemoteSSO.aidl&&............\...\AndroidManifest.xml&&............\...\classes\cn\sharesdk\demo\AuthPage.class&&............\...\.......\..\........\....\BuildConfig.class&&............\...\.......\..\........\....\DemoPage$1$1.class&&............\...\.......\..\........\....\DemoPage$1.class&&............\...\.......\..\........\....\DemoPage$2$1.class&&............\...\.......\..\........\....\DemoPage$2.class&&............\...\.......\..\........\....\DemoPage.class&&............\...\.......\..\........\....\GetInforPage.class&&............\...\.......\..\........\....\GetTokenPage.class&&............\...\.......\..\........\....\JsonUtils.class&&............\...\.......\..\........\....\MainActivity$1.class&&............\...\.......\..\........\....\MainActivity.class&&............\...\.......\..\........\....\MainAdapter.class&&............\...\.......\..\........\....\R$attr.class&&............\...\.......\..\........\....\R$color.class&&............\...\.......\..\........\....\R$drawable.class&&............\...\.......\..\........\....\R$id.class&&............\...\.......\..\........\....\R$integer.class&&............\...\.......\..\........\....\R$layout.class&&............\...\.......\..\........\....\R$string.class&&............\...\.......\..\........\....\R$style.class&&............\...\.......\..\........\....\R.class&&............\...\.......\..\........\....\ShowInforPage.class&&............\...\.......\..\........\....\WechatPage$1.class&&............\...\.......\..\........\....\WechatPage.class&&............\...\.......\..\........\....\wxapi\WXEntryActivity.class&&............\...\.......\..\........\onekeyshare\res\btn_back.9.png&&............\...\.......\..\........\...........\...\btn_cancel_back.9.png&&............\...\.......\..\........\...........\...\edittext_back.9.png&&............\...\.......\..\........\...........\...\gray_point.png&&............\...\.......\..\........\...........\...\logo_douban.png&&............\...\.......\..\........\...........\...\logo_email.png&&............\...\.......\..\........\...........\...\logo_evernote.png&&............\...\.......\..\........\...........\...\logo_facebook.png&&............\...\.......\..\........\...........\...\logo_neteasemicroblog.png&&............\...\.......\..\........\...........\...\logo_qzone.png&&............\...\.......\..\........\...........\...\logo_renren.png&&............\...\.......\..\........\...........\...\logo_shortmessage.png&&............\...\.......\..\........\...........\...\logo_sinaweibo.png&&............\...\.......\..\........\...........\...\logo_tencentweibo.png&&............\...\.......\..\........\...........\...\logo_twitter.png&&............\...\.......\..\........\...........\...\logo_wechat.png&&............\...\.......\..\........\...........\...\logo_wechatmoments.png&&............\...\.......\..\........\...........\...\NinePatchTool.class&&............\...\.......\..\........\...........\...\pin.png&&............\...\.......\..\........\...........\...\R.class&&............\...\.......\..\........\...........\...\share_tb_back.9.png&&............\...\.......\..\........\...........\...\share_vp_back.9.png&&............\...\.......\..\........\...........\...\strings.xml&&............\...\.......\..\........\...........\...\title_shadow.png&&............\...\.......\..\........\...........\...\white_point.png&&............\...\.......\..\........\...........\ShareAllGird$1.class&&............\...\.......\..\........\...........\ShareAllGird.class&&............\...\.......\..\........\...........\SharePage$1.class&&............\...\.......\..\........\...........\SharePage$2.class&&............\...\.......\..\........\...........\SharePage$3.class&&............\...\.......\..\........\...........\SharePage$4.class&&............\...\.......\..\........\...........\SharePage.class&&............\...\.......\..\........\...........\WeiboGridView$1.class&&............\...\.......\..\........\...........\WeiboGridView$2.class&&............\...\.......\..\........\...........\WeiboGridView$3.class&&............\...\.......\..\........\...........\WeiboGridView$GridView.class&&............\...\.......\..\........\...........\WeiboGridView$WeiboAdapter.class&&............\...\.......\..\........\...........\WeiboGridView.class&&............\...\.......\.om\sina\sso\RemoteSSO$Stub$Proxy.class&&............\...\.......\...\....\...\RemoteSSO$Stub.class&&............\...\.......\...\....\...\RemoteSSO.aidl&&............\...\.......\...\....\...\RemoteSSO.class&&............\...\classes.dex&&............\...\dexedLibs\android-support-v4-ece265fc459dfd1b920ce.jar&&............\...\.........\annotations-e51552d4fbe0d7bd5d4bb.jar&&............\...\.........\evernote-api-1.23-3eb87d653f03d9fcc2164a.jar&&............\...\.........\libammsdk-86ec2df2ebe9ed6ffe8972.jar&&............\...\.........\mframework-06b64e5d7dade8b95c496b32b1debf10.jar&&............\...\.........\scribe-1.3.1-8d7cc302e845c14d6f83da4627dbb14f.jar&&............\...\.........\ShareSDK-Core-7b9cbe016feb13f5396bacca0a41e6d7.jar&&............\...\.........\ShareSDK-Douban-b0a165ae0fbe40d6102dbf92f8087de3.jar&&............\...\.........\ShareSDK-Email-77a2aafedef7.jar&&............\...\.........\ShareSDK-Evernote-5ede29ca88b8c43f5629ae2.jar&&............\...\.........\ShareSDK-Facebook-b0f2997afc41119a8fab6e.jar&&............\...\.........\ShareSDK-NetEaseMicroBlog-966d1aba304ae9.jar&&............\...\.........\ShareSDK-QZone-c96379dbc22a9dfae6ee54.jar&&............\...\.........\ShareSDK-Renren-9ccd113cbb800c7cec14b9c503d341c7.jar&&............\...\.........\ShareSDK-ShortMessage-59aac43ebadcd.jar&&............\...\.........\ShareSDK-SinaWeibo-3dd756cb4ed4444ee8fa7.jar&&............\...\.........\ShareSDK-TencentWeibo-2fc41f1b75e295f09cd8f7403cda51e2.jar&&............\...\.........\ShareSDK-Twitter-60e9b86d3c4cb6c5a28a.jar&&............\...\.........\ShareSDK-Wechat-Core-a1af01d2dd3ef8eee42f.jar&&............\...\.........\ShareSDK-Wechat-d70e047bf71e.jar&&............\...\.........\ShareSDK-Wechat-Moments-3b591c67adf8ec0af4ffa.jar&&............\...\jarlist.cache&&............\...\res\drawable-hdpi\cb_checked.png&&............\...\...\.............\cb_uncheck.png
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - android java实现的微博分享 图片文字的功能ShareSDK安卓分享到新浪微博,怎么自定义分享界面_百度知道
ShareSDK安卓分享到新浪微博,怎么自定义分享界面
我有更好的答案
请您开机按F2键进入BIOS设置: 光驱安装系统法,系统安装完毕: 1,Boot菜单下Boot Device Priority选项设置光驱引导启动,根据提示分区安装系统,按F10键保存退出。 2,提示按任意键进入系统安装界面.插入系统安装盘安装操作系统常用的两种方法
其他类似问题
为您推荐:
新浪微博的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 sharesdk新浪分享 的文章

 

随机推荐