如何在studio中使用sharesdk怎么使用

你的位置: >
> Android Studio 使用技巧(三)
又有新货了,在中提到了活动模板(Live Template)的使用,今天将更进一层,了解更多的模板的使用
1、文件模板(File Template)
打开模板文件 Tools–&Save file as template
右键–&新建文件可以看到你保存的模板
感叹一下,Android Stdudio 是基于Intellij Idea重构而来,在早期的AS版本可以在Tools这个目录下有Save Project as template 但是并没有实现这个功能(Intellij Idea中有这个功能的),期待了很久,却在最新的AS中直接去掉了这个菜单,很是失望。
2、活动模板(Live template)高级
前面的文章中已经介绍了一些简单的用法以及简单的自定义,为什么我还要拿出来写呢?一个是活动模板真的很好用,也很实用,文件模板太死板了,远没有活动模板用的广泛
在Android Studio 1.3以上版本,新增了不少很实用的活动模板(live template),而且添加了在Xml文件中使用活动模板(live template)的支持,android Studio 虽然提供了强大了代码提示功能,如敲打“
($cast$) findViewById(R.id.$resId$);
cast 会智能根据你View的类型进行强转,光标会根据定义变量先后位置跳转(按Enter)
这个强转是怎么做到的呢?在旁边面板有一个“Edit variables”点击可以看到
还存在变量名(Name),语法(Expression),默认值(Default Value)等选项。
cast的语法是expectedType()(预期类型)用有道词典是这么翻译的,大概理解为强转转换的意思吧
resId 的语法是completeSmart()(大概是就智能提示的意思),看到的效果就是自动弹出id提示框
介绍到这里,相信小伙伴们也想试试更多功能,慢慢去尝试吧!
这里我不是像教科书一样列举出每一个类型,每一种语法之类的一些长篇大论都不想看的东西,只是起到抛砖引玉的作用,让更多的人认识到有这些新东西,引起大家的兴趣,在工作中有人认为android开发很枯燥,整天就写写界面,对对接口,改改bug之类的,熟悉你的工具,能更好的帮你完成工作。
转载请注明: &
与本文相关的文章如何在studio中使用shareSDK - 简书
下载简书移动应用
写了8552字,被4人关注,获得了19个喜欢
如何在studio中使用shareSDK
小弟本人的一个安卓项目“小文”需要用到shareSDK这个第三方软件,把文章分享出去给读者的好友他们。本来,本人想直接用微信,微博提供的sdk。后来搜索了下,有个强大的sdk,集成了所有社交软件的第三方分享----shareSDK。竟然这么好用,那就看看,用用。第一步:进入官网shareSDK官网:/第二步:注册一个账号点击注册就可以了,然后登陆第三步:下载shareSDK
进入后台后,点击shareSDK
然后点击添加应用,填写自己应用的信息,然后记得记住你的应用的APP KEY第四步:真正下载shareSDK点击快速继承右边的那个快速集成按钮
然后点击下载shareSDK
然后点击SDK下载
选择shareSDK for android,它就会开始下载了。第五步:把下载回来的shareSDK解压解压出来会有ShareSDK for Android和ShareSDK for Android service这个两个文件夹。留下ShareSDK for Android这个文件夹。这个才是要用的。打开ShareSDK for Android,点击QuickIntegrater.jar这个文件,如果打不开,就建立一个txt文档,在里面输入javaw -jar QuickIntegrater.jar,最后把这个文档命名为.bat的文档,然后点击它运行就可以了。点击后,出现下面的界面:
在这个节目里面,项目名称为你这个项目的名称,比如本人的“小文”项目,项目名字为Say
项目包名到AndroidManifest.xml文件里面找,然后根据自己的需要,选择那些分享平台是需要的,如果需要就打上勾,最后点击确定就可以了。确定后,在ShareSDK for Android文件夹里面,生成一个跟你项目名一样的文件夹,打开那个项目夹,里面的内容有,如下图
第六步:开始把项目复制进入studio到了这里,我按照shareSDK里面的文档做,把生成的项目和本来原来的项目合拼,然后,哈哈。。。失败了。我想了下,可能是studio和eclipse的文件夹不同导致的,因为我看的文档的开发工具是eclipse的。失败后,我上网搜索了下,找到了一种办法,就是把shareSDK里面libs的两个文件夹弄成jar项目,然后添加入自己的项目里面。烦,我看了这个办法。这个办法大家可以百度下,一百度就有了。因为这个办法给转载了n次,一进入百度搜索下,全部都是一模一样的内容。好了,我该说说我傻逼的做法了。无奈,本人懒惰,智商不高,只可以用傻逼的做法。首先打开studio,shareSDK自动生成的那个文件里面的文件的assets文件夹,res文件夹直接复制,粘贴到src/main里面。把libs里面的jar包复制到studio里面的libs,再把这些jar包添加到依赖库里面就可以了。把src复制,粘贴到studio/main/java里面就可以了:如下图
第七部:添加配置添加如下权限
AndroidManifest.xml里面添加一个对acitivity的注册和一个使用微信分享时的acitivty的注册
特别注意这句代码:android:name="com.mob.tools.MobUIShell"最后在自己要分享的页面添加分享的代码就可以了ShareSDK.initSDK(this);OnekeyShare oks =newOnekeyShare();//分享时Notification的图标和文字2.5.9以后的版本不调用此方法//oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用oks.setTitle("小文分享");// 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("内容来自小文APP");// siteUrl是分享此内容的网站地址,仅在QQ空间使用//oks.setSiteUrl("");//启动分享GUIoks.show(this);等等代码。最后,最后,上个“小文”分享的效果图
如有问题,希望大家多多指点,一起进步。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
· 77人关注
安卓学习交流
· 44人关注
有关安卓开发的技术博客
· 20人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:Android(8)
第一次给AndroidStudi导入依赖库,导入的第三方库ShareSDK,由于已有的第三方库基本都是eclipse写的,studio虽然说是可以兼容eclipse工程,但是还是无法完全兼容,还是会有各种各样的问题,下面来说一下这次导入ShareSDK遇到的问题及解决办法:
由于我使用的是23的SDK当导入ShareSDK library时会报错,所以我们需要将library中的清单文件中的sdk版本改为和module中的清单文件的sdk版本一致,导入的时候最好不要直接导入,新建一个library形式的module然后将main文件夹下的java,res,AndroidManifest删除,AndroidManifest,,以及lib下的jar包复制过去然后添加add liarary即可...
&application
&&&&&&& android:allowBackup=&true&
&&&&&&& android:debuggable=&true&&
导入好后这可两行代码可能会出现警告,千万不要根据提示修改它,改了就会出现各种错,原因本人还没找到.......
下一步导入OneKeyShar一键分享的依赖库方法同上,
最后将src文件夹的文件名改为java即可,java文件中可能floatMath.sqrt方法可能会报错,studio中弃用了此方法,将原方法改为Math.sqrt即可,由于Math.sqrt的返回值是double类型,强转为float类型即可.
最后依次按照官方文档上的提示做即可.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:987次
排名:千里之外使用share SDK实现QQ空间登录、分享(1.x版本) - 推酷
使用share SDK实现QQ空间登录、分享(1.x版本)
操作步骤:
1、在share官网注册应用生成AppKey并下载SDK&&&&&网址:
2、在QQ空间平台注册应用生成AppId和AppKey&&& 网址:
3、导入SDK包。只实现QQ空间登录分享的话只需要导入ShareSDK-Core.jar(核心包)、ShareSDK-QZone.jar(QQ空间)、cn.sharesdk.onekeyshare.jar(快捷分享)
4、配置:需要配置assets里面的ShareSDKDevInfor.xml和AndroidManifest.xml(后面有示例介绍)
5、添加代码实现登录、获取信息、分享等功能(见下面示例)。
ShareSDKDevInfor.xml:
&?xml version=&1.0& encoding=&utf-8&?&
&DevInfor&
&!--说明:
1、表格中的第一项
&ShareSDK AppKey=&api20& /&
是必须的,其中的AppKey是你在Share SDK上注册的开发者帐号的AppKey
2、所有集成到你项目的平台都应该为其在表格中填写相对应的开发者信息,以新浪微博为例:
&SinaWeibo
SortId=&此平台在分享列表中的位置,由开发者自行定义,可以是任何整型数字,数值越大越靠后&
AppKey=&填写你在新浪微博上注册的AppKey&
AppSecret=&填写你在新浪微博上注册到的AppKey&
Id=&自定义字段,整形,用于你项目中对此平台的识别符&
RedirectUrl=&填写你在新浪微博上注册的RedirectUrl& /&
各个平台注册应用信息的地址如下:
新浪微博:
腾讯微博:http://dev.
QQ空间:/intro/login/
网易微博:http://open.
搜狐微博:http://open.
Instapaper:/main/request_oauth_consumer_token
有道云笔记:/open/developguide.html#app
facebook:
搜狐随身看:
QQ好友分享:/api/
微信:http://open.--&
AppKey = &123d2e98bef8&/& &!-- AppKey=&104972cdd48& &23a&--&
SortId=&1&
AppKey=&aed9be27bae87cd&
RedirectUrl=&& /&
&/DevInfor&
AndroidManifest.xml:
&?xml version=&1.0& encoding=&utf-8&?&
&manifest xmlns:android=&/apk/res/android&
package=&com.home.testqqshare&
android:versionCode=&1&
android:versionName=&1.0& &
android:minSdkVersion=&8&
android:targetSdkVersion=&17& /&
&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.WRITE_APN_SETTINGS& /&
&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.MOUNT_UNMOUNT_FILESYSTEMS& /&
&application
android:allowBackup=&true&
android:icon=&@drawable/ic_launcher&
android:label=&@string/app_name&
android:theme=&@style/AppTheme& &
android:name=&com.home.testqqshare.LoginActivity&
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.home.testqqshare.MainActivity& /&
&activity android:name=&com.home.testqqshare.ShowInfoActivity& /&
&!-- share SDK 里面的组件 --&
android:name=&cn.sharesdk.framework.AuthorizeActivity&
android:configChanges=&keyboardHidden|orientation&
android:screenOrientation=&portrait&
android:theme=&@android:style/Theme.Translucent.NoTitleBar&
android:windowSoftInputMode=&stateHidden|adjustResize& &
&/activity&
android:name=&cn.sharesdk.onekeyshare.ShareAllGird&
android:configChanges=&keyboardHidden|orientation&
android:screenOrientation=&portrait&
android:theme=&@android:style/Theme.Translucent.NoTitleBar&
android:windowSoftInputMode=&adjustPan|stateHidden& /&
android:name=&cn.sharesdk.onekeyshare.SharePage&
android:configChanges=&keyboardHidden|orientation&
android:screenOrientation=&portrait&
android:windowSoftInputMode=&stateHidden|adjustResize& /&
&/application&
&/manifest&
LoginActivity:
package com.home.
import java.util.HashM
import android.app.A
import android.content.I
import android.os.B
import android.os.H
import android.os.Handler.C
import android.os.M
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.T
import cn.sharesdk.framework.AbstractW
import cn.sharesdk.framework.WeiboActionL
import cn.sharesdk.tencent.qzone.QZ
public class LoginActivity extends Activity implements OnClickListener,
WeiboActionListener, Callback {
private Button loginB
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
// 初始化ShareSDK
AbstractWeibo.initSDK(this);
loginBtn = (Button) findViewById(R.id.login_btn_QQ);
loginBtn.setOnClickListener(this);
handler = new Handler(this);
public void onClick(View v) {
if (v == loginBtn) {
AbstractWeibo weibo = AbstractWeibo.getWeibo(this, QZone.NAME);
weibo.setWeiboActionListener(this);
weibo.showUser(null);
public void onComplete(AbstractWeibo weibo, int arg1,
HashMap&String, Object& arg2) {
Message msg = new Message();
msg.arg1 = 1;
handler.sendMessage(msg);
public void onError(AbstractWeibo weibo, int arg1, Throwable t) {
t.printStackTrace();
Message msg = new Message();
msg.arg1 = 2;
handler.sendMessage(msg);
public void onCancel(AbstractWeibo weibo, int arg1) {
Message msg = new Message();
msg.arg1 = 3;
handler.sendMessage(msg);
protected void onDestroy() {
// 结束ShareSDK的统计功能并释放资源
AbstractWeibo.stopSDK(this);
super.onDestroy();
* 处理从授权页面返回的结果:异常则给出提示,正常则跳转页面
public boolean handleMessage(Message msg) {
AbstractWeibo weibo = (AbstractWeibo) msg.
switch (msg.arg1) {
case 1: { // 成功
Toast.makeText(this, weibo.getName() + &授权成功&, Toast.LENGTH_SHORT)
case 2: { // 失败
Toast.makeText(this, weibo.getName() + &授权失败&, Toast.LENGTH_SHORT)
case 3: { // 取消
Toast.makeText(this, weibo.getName() + &授权取消&, Toast.LENGTH_SHORT)
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
MainActivity:
package com.home.
import java.io.F
import java.io.FileOutputS
import java.util.HashM
import android.app.A
import android.content.I
import android.graphics.B
import android.pressF
import android.graphics.BitmapF
import android.os.B
import android.os.E
import android.os.H
import android.os.Handler.C
import android.os.M
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.T
import cn.sharesdk.framework.AbstractW
import cn.sharesdk.framework.WeiboActionL
import cn.sharesdk.onekeyshare.ShareAllG
import cn.sharesdk.tencent.qzone.QZ
public class MainActivity extends Activity implements OnClickListener,
WeiboActionListener, Callback {
private Button getInfoB
private Button noUIShareB
private Button hasUIShareB
private Button logoutB
// 定义图片存放的地址
public static String TEST_IMAGE;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AbstractWeibo.initSDK(this);
initWidget();
initImage();
* 初始化UI相关组件
private void initWidget() {
getInfoBtn = (Button) findViewById(R.id.main_get_userinfo);
noUIShareBtn = (Button) findViewById(R.id.main_share_noUI);
hasUIShareBtn = (Button) findViewById(R.id.main_share_hasUI);
logoutBtn = (Button) findViewById(R.id.main_btn_logout);
getInfoBtn.setOnClickListener(this);
noUIShareBtn.setOnClickListener(this);
hasUIShareBtn.setOnClickListener(this);
logoutBtn.setOnClickListener(this);
handler = new Handler(this);
public void onClick(View v) {
if (v == getInfoBtn) {
AbstractWeibo weibo = AbstractWeibo.getWeibo(this, QZone.NAME);
weibo.setWeiboActionListener(this);
weibo.showUser(null);
} else if (v == noUIShareBtn) {
showGrid(true);
} else if (v == hasUIShareBtn) {
showGrid(false);
} else if (v == logoutBtn) {// 注销
AbstractWeibo weibo = AbstractWeibo.getWeibo(this, QZone.NAME);
if (weibo.isValid()) {
weibo.removeAccount();
public void onCancel(AbstractWeibo weibo, int arg1) {
Message msg = new Message();
msg.arg1 = 3;
handler.sendMessage(msg);
public void onComplete(AbstractWeibo weibo, int arg1,
HashMap&String, Object& res) {
Message msg = new Message();
msg.arg1 = 1;
JsonUtils ju = new JsonUtils();
String json = ju.fromHashMap(res);
msg.obj = ju.format(json);
handler.sendMessage(msg);
public void onError(AbstractWeibo weibo, int arg1, Throwable arg2) {
Message msg = new Message();
msg.arg1 = 2;
handler.sendMessage(msg);
/** 处理操作结果 */
public boolean handleMessage(Message msg) {
switch (msg.arg1) {
case 1: { // 成功
Intent intent = new Intent(MainActivity.this,
ShowInfoActivity.class);
intent.putExtra(&data&, String.valueOf(msg.obj));
startActivity(intent);
case 2: {// 失败
AbstractWeibo weibo = (AbstractWeibo) msg.
Toast.makeText(this, weibo.getName() + &授权失败&, Toast.LENGTH_SHORT)
case 3: {// 取消
AbstractWeibo weibo = (AbstractWeibo) msg.
Toast.makeText(this, weibo.getName() + &授权取消&, Toast.LENGTH_SHORT)
* 使用快捷分享完成图文分享
* @param silent
是否直接分享
private void showGrid(boolean silent) {
Intent i = new Intent(this, ShareAllGird.class);
// 分享时Notification的图标
i.putExtra(&notif_icon&, R.drawable.ic_launcher);
// 分享时Notification的标题
i.putExtra(&notif_title&, this.getString(R.string.app_name));
// title标题,在印象笔记、邮箱、信息、微信(包括好友和朋友圈)、人人网和QQ空间使用,否则可以不提供
i.putExtra(&title&, this.getString(R.string.share));
// titleUrl是标题的网络链接,仅在人人网和QQ空间使用,否则可以不提供
i.putExtra(&titleUrl&, &&);
// text是分享文本,所有平台都需要这个字段
i.putExtra(&text&, this.getString(R.string.share_content));
// imagePath是本地的图片路径,所有平台都支持这个字段,不提供,则表示不分享图片
i.putExtra(&imagePath&, MainActivity.TEST_IMAGE);
// url仅在微信(包括好友和朋友圈)中使用,否则可以不提供
i.putExtra(&url&, &&);
// thumbPath是缩略图的本地路径,仅在微信(包括好友和朋友圈)中使用,否则可以不提供
i.putExtra(&thumbPath&, MainActivity.TEST_IMAGE);
// appPath是待分享应用程序的本地路劲,仅在微信(包括好友和朋友圈)中使用,否则可以不提供
i.putExtra(&appPath&, MainActivity.TEST_IMAGE);
// comment是我对这条分享的评论,仅在人人网和QQ空间使用,否则可以不提供
i.putExtra(&comment&, this.getString(R.string.share));
// site是分享此内容的网站名称,仅在QQ空间使用,否则可以不提供
i.putExtra(&site&, this.getString(R.string.app_name));
// siteUrl是分享此内容的网站地址,仅在QQ空间使用,否则可以不提供
i.putExtra(&siteUrl&, &&);
// 是否直接分享
i.putExtra(&silent&, silent);
this.startActivity(i);
* 初始化分享的本地图片
private void initImage() {
try {// 判断SD卡中是否存在此文件夹
if (Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())
&& Environment.getExternalStorageDirectory().exists()) {
File baseFile = new File(
Environment.getExternalStorageDirectory(), &share&);
if (!baseFile.exists()) {
baseFile.mkdir();
TEST_IMAGE = baseFile.getAbsolutePath() + &/picture.png&;
TEST_IMAGE = getApplication().getFilesDir().getAbsolutePath()
+ &/picture.png&;
File file = new File(TEST_IMAGE);
// 判断图片是否存此文件夹中
if (!file.exists()) {
file.createNewFile();
Bitmap pic = BitmapFactory.decodeResource(getResources(),
R.drawable.picture);
FileOutputStream fos = new FileOutputStream(file);
press(CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (Throwable t) {
t.printStackTrace();
TEST_IMAGE =
protected void onDestroy() {
// 结束ShareSDK的统计功能并释放资源
AbstractWeibo.stopSDK(this);
super.onDestroy();
显示信息ShowInfoActivity:
package com.home.
import android.app.A
import android.os.B
import android.widget.TextV
public class ShowInfoActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_info);
TextView show = (TextView) findViewById(R.id.show_info_tv);
show.setText(getIntent().getStringExtra(&data&));
JsonUtils工具类:
package com.home.
import java.util.ArrayL
import java.util.HashM
import java.util.I
import java.util.Map.E
import org.json.JSONA
import org.json.JSONE
import org.json.JSONO
public class JsonUtils {
* 将指定的json数据转成 HashMap&String, Object&对象
public HashMap&String, Object& fromJson(String jsonStr) {
if (jsonStr.startsWith(&[&) && jsonStr.endsWith(&]&)) {
jsonStr = &{\&fakelist\&:& + jsonStr + &}&;
JSONObject json = new JSONObject(jsonStr);
return fromJson(json);
} catch (Throwable t) {
t.printStackTrace();
return new HashMap&String, Object&();
private HashMap&String, Object& fromJson(JSONObject json)
throws JSONException {
HashMap&String, Object& map = new HashMap&String, Object&();
@SuppressWarnings(&unchecked&)
Iterator&String& iKey = json.keys();
while (iKey.hasNext()) {
String key = iKey.next();
Object value = json.opt(key);
if (JSONObject.NULL.equals(value)) {
if (value != null) {
if (value instanceof JSONObject) {
value = fromJson((JSONObject) value);
} else if (value instanceof JSONArray) {
value = fromJson((JSONArray) value);
map.put(key, value);
private ArrayList&Object& fromJson(JSONArray array) throws JSONException {
ArrayList&Object& list = new ArrayList&Object&();
for (int i = 0, size = array.length(); i & i++) {
Object value = array.opt(i);
if (value instanceof JSONObject) {
value = fromJson((JSONObject) value);
} else if (value instanceof JSONArray) {
value = fromJson((JSONArray) value);
list.add(value);
* 将指定的HashMap&String, Object&对象转成json数据
public String fromHashMap(HashMap&String, Object& map) {
return getJSONObject(map).toString();
} catch (Throwable t) {
t.printStackTrace();
return &&;
@SuppressWarnings(&unchecked&)
private JSONObject getJSONObject(HashMap&String, Object& map)
throws JSONException {
JSONObject json = new JSONObject();
for (Entry&String, Object& entry : map.entrySet()) {
Object value = entry.getValue();
if (value instanceof HashMap&?, ?&) {
value = getJSONObject((HashMap&String, Object&) value);
} else if (value instanceof ArrayList&?&) {
value = getJSONArray((ArrayList&Object&) value);
json.put(entry.getKey(), value);
@SuppressWarnings(&unchecked&)
private JSONArray getJSONArray(ArrayList&Object& list) throws JSONException {
JSONArray array = new JSONArray();
for (Object value : list) {
if (value instanceof HashMap&?, ?&) {
value = getJSONObject((HashMap&String, Object&) value);
} else if (value instanceof ArrayList&?&) {
value = getJSONArray((ArrayList&Object&) value);
array.put(value);
* 格式化一个json串
public String format(String jsonStr) {
return format(&&, fromJson(jsonStr));
} catch (Throwable t) {
t.printStackTrace();
return &&;
@SuppressWarnings(&unchecked&)
private String format(String sepStr, HashMap&String, Object& map) {
StringBuffer sb = new StringBuffer();
sb.append(&{\n&);
String mySepStr = sepStr + &\t&;
int i = 0;
for (Entry&String, Object& entry : map.entrySet()) {
if (i & 0) {
sb.append(&,\n&);
sb.append(mySepStr).append('\&').append(entry.getKey())
.append(&\&:&);
Object value = entry.getValue();
if (value instanceof HashMap&?, ?&) {
sb.append(format(mySepStr, (HashMap&String, Object&) value));
} else if (value instanceof ArrayList&?&) {
sb.append(format(mySepStr, (ArrayList&Object&) value));
} else if (value instanceof String) {
sb.append('\&').append(value).append('\&');
sb.append(value);
sb.append('\n').append(sepStr).append('}');
return sb.toString();
@SuppressWarnings(&unchecked&)
private String format(String sepStr, ArrayList&Object& list) {
StringBuffer sb = new StringBuffer();
sb.append(&[\n&);
String mySepStr = sepStr + &\t&;
int i = 0;
for (Object value : list) {
if (i & 0) {
sb.append(&,\n&);
sb.append(mySepStr);
if (value instanceof HashMap&?, ?&) {
sb.append(format(mySepStr, (HashMap&String, Object&) value));
} else if (value instanceof ArrayList&?&) {
sb.append(format(mySepStr, (ArrayList&Object&) value));
} else if (value instanceof String) {
sb.append('\&').append(value).append('\&');
sb.append(value);
sb.append('\n').append(sepStr).append(']');
return sb.toString();
登录界面布局文件login.xml:
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical&
android:gravity=&center_horizontal&&
android:id=&@+id/login_btn_QQ&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:text=&QQ授权登录& /&
&/LinearLayout&
主布局文件main.xml:
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical& &
android:id=&@+id/main_get_userinfo&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:text=&获取用户信息& /&
android:id=&@+id/main_share_noUI&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:text=&分享(无界面)& /&
android:id=&@+id/main_share_hasUI&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:text=&分享(有界面)& /&
android:id=&@+id/main_btn_logout&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:text=&注销登录& /&
&/LinearLayout&
显示信息的布局show_info.xml:
&?xml version=&1.0& encoding=&utf-8&?&
&RelativeLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical& &
&ScrollView
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:layout_alignParentTop=&true& &
android:id=&@+id/show_info_tv&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:layout_marginRight=&10dp&
android:autoLink=&all&
android:textColor=&#ff000000& /&
&/ScrollView&
&/RelativeLayout&
&?xml version=&1.0& encoding=&utf-8&?&
&resources&
&string name=&app_name&&TestQQShare&/string&
&string name=&action_settings&&Settings&/string&
&string name=&hello_world&&Hello world!&/string&
&string name=&share_content&&测试使用shareSDK进行分享,感觉还不错,使用方便,功能强大!&/string&
&string name=&share&&分享&/string&
&/resources&
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 sharesdk使用 的文章

 

随机推荐