积分墙app可以用友盟排重吗

//首先应该去友盟的官网注册你的账号,创建一个应用,获得它的APPkey,也可以用它的API上的appkey,下载SDK,下面根据API文档一步步实现就行了。
//下面是友盟的APi文档
1.&&产品概述
关于分享和授权的sdk接口,我们在v5.0做出了巨大的改变,精简了接口调用的代码。并将分享授权,与评论等功能做出了隔离,使结构更加清晰。所以本版本的功能也只有分享与授权并无其他功能,请开发者注意。
注意:本文示例代码只有分享与授权功能,并对接口进行了调整,如需要原功能的开发者,请继续使用v4.3.0版本。
2.&&获取友盟Appkey
如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它.
如果你尚未在友盟注册开发者账号,需要先注册,注册之后登录你的账号,点击添加新应用,填写完应用基本信息后,将进入"下载SDK并添加代码"页面,此页面即可得到Appkey。
3.&&下载并安装SDK
添加代码和资源引用,我们提供了添加资源文件和jar文件的两种方式,可以根据需求选择
解压SDK压缩包,将文件夹中的'main/libs'和'main/res'文件夹复制到你的项目工程根目录下(如使用'ADT 17'以下用户需要手动添加'libs'下的jar文件到工程Path中)
解压SDK压缩包,将文件夹中的social_sdk_library_project文件夹导入Eclipse,并在您的工程中添加对此项目的引用即可。
AndroidManifest配置
其中增加一个activity
设置友盟appid
为了适配新的android 6.0 permission系统,你需要加入requestPermission()方法来获取权限, 详细方法请参照:
请先升级最新版android-support-v4.jar包如果你想适配低版本的系统。 把以下代码加入到你的build.gradle文件中,如果你用的是android studio
dependencies {
compile "com.android.support:support-v4:23.3.0"
针对不平台所需要添加的数据
按照自己需要的平台添加对应的配置
4.&&初始化配置
4.1&&各个平台的配置,建议放在全局Application或者程序入口
PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe");
说明:有些平台的分享时通过调起本地客户端的形式完成的,因此,并不需要appid,但是诸如需要使用第三方公司api的平台,新浪,腾讯等,是需要去申请appkey的。其实新浪微博可以把appid等配置在代码中,也可在友盟后台中设置,豆瓣和人人网只能在友盟后台设置。其它需要配置appid的平台,如qq,微信,易信,twitter等都需要在代码中设置。还有一部分平台需要在mainfest中配置,前面已经提到过。
5.&&第三方登录
目前友盟社会化组件支持的第三方登录平台为:新浪微博、腾讯微博、QQ、QQ空间、微信、人人网、豆瓣、Facebook、Twitter。
第三方登录功能主要通过授权和获取用户信息这两个接口实现
首先获取UMShareAPI
mShareAPI = UMShareAPI.get(this);
选取需要授权的平台,并进行授权,其中umAuthLisrener是回调监听器,需要开发者根据需求重新定义
SHARE_MEDIA platform = SHARE_MEDIA.SINA;
mShareAPI.doOauthVerify(this, platform, umAuthListener)
private UMAuthListener umAuthListener = new UMAuthListener() {
public void onComplete(SHARE_MEDIA platform, int action, Map&String, String& data) {
Toast.makeText( getApplicationContext(), "Authorize succeed", Toast.LENGTH_SHORT).show();
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show();
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show();
对于删除授权使用的接口是
mShareAPI.deleteOauth(AuthActivity.this, platform, umdelAuthListener);
不难看出与授权的参数是一样的。
注意要重写
onActivityResult()
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mShareAPI.onActivityResult(requestCode, resultCode, data);
5.1.1&&获取客户端安装信息
使用如下接口
mShareAPI.isInstall(this, SHARE_MEDIA.WEIXIN)
5.2&&获取用户信息
已授权的平台,可以获取用户信息(新浪微博可以获取用户好友列表) 实现的方法与授权和解除授权类似:
mShareAPI = UMShareAPI.get(this);
初始化UMShareAPI,然后进行用户信息获取:
mShareAPI.getPlatformInfo(UserinfoActivity.this, platform, umAuthListener);
注意必须在调用授权接口mShareAPI.doOauthVerify(this, platform, umAuthListener)&之后才可以获取用户信息,建议在doOauthVerify方法完成的onComplete方法中调用获取用户信息方法,返回的所有信息都在Map&data)集合中获取
对于新浪微博好友列表的获取使用的接口是:
mShareAPI.getFriend(UserinfoActivity.this, SHARE_MEDIA.SINA, umGetfriendListener);
注意要重写
onActivityResult()
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mShareAPI.onActivityResult(requestCode, resultCode, data);
} //下面是我做的,可以看一下,看到不足之处,请指出,一起共同学习。(提示我是用Android studio做的,底版的Eclipse好像不行,新版的可以,已试过)//---------------------------------------------------------------------------新创建一个项目//-----------下面的是我的
main.XML------中-------一个Imageview用于显示头像,一个textview用于显示QQ名,一个button登录按钮----------------
&ImageView android:layout_width="80dp"
android:layout_height="80dp"
android:scaleType="fitXY"
android:id="@+id/iv_image"
android:src="@mipmap/ic_launcher"/&&TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name"
android:id="@+id/tv_name"
android:layout_marginTop="10dp" /&&Button android:layout_width="70dp"
android:layout_height="40dp"
android:text="登录"
android:id="@+id/bt_denglu"
android:layout_marginTop="10dp"
android:gravity="center"/&//---------------------------下面是打开我下载的Sdk,把main下的
全部复制到对应的libs下和res下面,2:把platforms下的qq_qzone下的libs和res同样复制添加到对应的下面(注意:libs下有一个Android&support-v4,这个不用复制了,studio自带了,我复制添加进去之后运行,结果报错了)-----------------------------------------------------------------//下面是报错
Error:Error converting bytecode to dex:Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionIError:Execution failed for task ':app:transformClassesWithDexForDebug'.& com.android.build.api.transform.TransformException: com.mon.process.ProcessException: java.util.concurrent.ExecutionException: com.mon.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_66\bin\java.exe'' finished with non-zero exit value 2v4包重复//------------下面就是在项目中新建一个类Myaplication 继承aplication实现onCreate的方法,把下面那行代码复制进去------------------------------public class Myaplication extends Application {
public void onCreate() {
super.onCreate();
PlatformConfig.setQQZone("", "caab60104f0ba");
}}//----------------下面就是在清单文件中,加入权限--------------------------------&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&&uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&&uses-permission android:name="android.permission.READ_PHONE_STATE" /&&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&&uses-permission android:name="android.permission.INTERNET" /&&uses-permission android:name="android.permission.READ_LOGS" /&&uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&&uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&&uses-permission android:name="android.permission.GET_TASKS" /&&uses-permission android:name="android.permission.SET_DEBUG_APP" /&&uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /&&uses-permission android:name="android.permission.GET_ACCOUNTS" /&&uses-permission android:name="android.permission.USE_CREDENTIALS" /&&uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /&
application标签下写入android:name=".Myaplication",这是刚创建那个类
&application
android:name=".Myaplication"
&!--友盟的activity--放入application标签中&&activity
android:name="com.umeng.socialize.editorpage.ShareActivity"
android:theme="@style/Theme.UMDefault"
android:excludeFromRecents="true"/&&meta-data
android:name="UMENG_APPKEY"
android:value="57d7fd70e0f55afc" &&/meta-data&
&!-- QQ的activity--&
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" &
&intent-filter&
&action android:name="android.intent.action.VIEW" /&
&category android:name="android.intent.category.DEFAULT" /&
&category android:name="android.intent.category.BROWSABLE" /&
&data android:scheme="tencent" /&
&/intent-filter&&/activity&&activity
android:name="com.mon.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /&
//---------整体就是下面这样--------------------
&manifest xmlns:android="/apk/res/android"
package=".disanfangdenglu"&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&
&uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&
&uses-permission android:name="android.permission.READ_PHONE_STATE" /&
&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&
&uses-permission android:name="android.permission.INTERNET" /&
&uses-permission android:name="android.permission.READ_LOGS" /&
&uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&
&uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&
&uses-permission android:name="android.permission.GET_TASKS" /&
&uses-permission android:name="android.permission.SET_DEBUG_APP" /&
&uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /&
&uses-permission android:name="android.permission.GET_ACCOUNTS" /&
&uses-permission android:name="android.permission.USE_CREDENTIALS" /&
&uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /&
&application
android:name=".Myaplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"&
&activity android:name=".MainActivity"&
&intent-filter&
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
&!--友盟的activity--&
android:name="com.umeng.socialize.editorpage.ShareActivity"
android:theme="@style/Theme.UMDefault"
android:excludeFromRecents="true"/&
&meta-data
android:name="UMENG_APPKEY"
android:value="57d7fd70e0f55afc" &
&/meta-data&
&!-- QQ的activity--&
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" &
&intent-filter&
&action android:name="android.intent.action.VIEW" /&
&category android:name="android.intent.category.DEFAULT" /&
&category android:name="android.intent.category.BROWSABLE" /&
&data android:scheme="tencent" /&
&/intent-filter&
&/activity&
android:name="com.mon.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /&
&/application&&/manifest&
//--------------打开 values下的string--------------------------------
&resources&
&string name="app_name"&DiSanFangDengLu&/string&
&!--加入下面这个--&
&string name="mShareAPI"&DiSanFangDengLu&/string&&/resources&
//----------把studio换成project下,在build.gradle中加入下面内容---------只有studio中才加这个,eclipse不用------------------
allprojects {
repositories {
}}//-----------下面就是mainActivity了--------可以获得用户QQ名、和头像-------------------------
package .import android.content.Cimport android.content.Iimport android.content.SharedPimport android.support.v7.app.AppCompatAimport android.os.Bimport android.util.Limport android.view.Vimport android.widget.Bimport android.widget.ImageVimport android.widget.TextVimport android.widget.Timport com.nostra13.universalimageloader.core.DisplayImageOimport com.nostra13.universalimageloader.core.ImageLimport com.nostra13.universalimageloader.core.ImageLoaderCimport com.umeng.socialize.UMAuthLimport com.umeng.socialize.UMShareAPI;import com.umeng.socialize.bean.SHARE_MEDIA;import java.util.Mimport java.util.Spublic class MainActivity extends AppCompatActivity implements View.OnClickListener{
private ImageView iv_
private TextView tv_
private Button bt_
private String
private String image_
UMShareAPI mShareAPI;
private SharedPreferences
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建SharedPreferences保存QQ名、头像
sp = getSharedPreferences("kk", Context.MODE_PRIVATE);
//找到控件
iv_image = (ImageView) findViewById(R.id.iv_image);
tv_name = (TextView) findViewById(R.id.tv_name);
bt_denglu = (Button) findViewById(R.id.bt_denglu);
//设置登录的点击监听事件
bt_denglu.setOnClickListener(this);
//实现登录的点击监听事件
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_denglu:
//友盟分享api
mShareAPI = UMShareAPI.get(this);
//分享媒体
把后面改成qq,用什么改成什么
SHARE_MEDIA platform = SHARE_MEDIA.QQ;
//友盟API进行核实,调用umAuthListener友盟授权监听
mShareAPI.doOauthVerify(this, platform, umAuthListener);
/*private UMAuthListener umAuthListener = new UMAuthListener() {
@Override//完整的
public void onComplete(SHARE_MEDIA platform, int action, Map&String, String& data) {
Toast.makeText( getApplicationContext(), "Authorize succeed", Toast.LENGTH_SHORT).show();
@Override//误差
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show();
@Override//取消
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show();
@Override//结果
必须添加的
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mShareAPI.onActivityResult(requestCode, resultCode, data);
private UMAuthListener umAuthListener = new UMAuthListener() {
public void onComplete(SHARE_MEDIA platform, int action, Map&String, String& data) {
// Toast.makeText(MainActivity.this, "Authorize succeed", Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
//友盟API获得平台信息
mShareAPI.getPlatformInfo(MainActivity.this, platform,
new UMAuthListener() {
public void onError(SHARE_MEDIA arg0, int arg1, Throwable arg2) {
public void onComplete(SHARE_MEDIA arg0, int arg1, Map&String, String& data) {
Set&String& set = data.keySet();
SharedPreferences.Editor edit = sp.edit();
for (String string : set) {
// 设置头像
if (string.equals("profile_image_url")) {
image_url = data.get(string);
Log.i("-------image",image_url);
// 设置昵称
if (string.equals("screen_name")) {
name = data.get(string);
edit.putString("image",image_url);
edit.putString("name",name);
tv_name.setText(name);
ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(MainActivity.this));
DisplayImageOptions options=new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).build();
ImageLoader.getInstance().displayImage(image_url,iv_image , options);
public void onCancel(SHARE_MEDIA arg0, int arg1) {
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
//Toast.makeText(MainActivity.this, "Authorize fail", Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText(MainActivity.this, "登录取消", Toast.LENGTH_SHORT).show();
//--------以上就是所有了,赶快试试吧-----------------------//-----------这一点是我多复制进去了一个v4包,删除不了,就在Android在的build.gradle(app)中把v4给删了,然后 clean一下就好了-------------------------------
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile files('libs/umeng_social_sdk.jar')
compile files('libs/SocialSDK_QQZone_3.jar')
compile files('libs/open_sdk_r5756.jar')
compile files('libs/mta-sdk-1.6.2.jar')}
阅读(...) 评论()&最近正在学习第三方的分享,看到别人很多用的友盟第三方,于是就去官网下载了SDK和相关的API开始整了。以下是我的流程,给自己做个笔记。第一步:注册自己的应用 拿到友盟APPKEY,应用名=你项目的包名下载好友盟分享SDK/social&然后解压出来二,把main文件下的libs和res里面的文件复制到你项目对应的文件里面,再把platforms/QQ精简版/libs下的文件也复制到项目的libs里面(我这里下载的QQ精简版),添加依赖三,修改AndroidManifest.xml文件&&& 权限:&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& /&&uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& /&&uses-permission android:name=&android.permission.READ_PHONE_STATE& /&&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE&/&&uses-permission android:name=&android.permission.READ_EXTERNAL_STORAGE&/&&uses-permission android:name=&android.permission.INTERNET& /&&uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION& /&&uses-permission android:name=&android.permission.ACCESS_COARSE_LOCATION& /&&uses-permission android:name=&android.permission.ACCESS_LOCATION_EXTRA_COMMANDS& /&& 添加//友盟的APPKEY
需要自己注册 把58b278f6f29d983ee60016e6换成你的&meta-data
android:name=&UMENG_APPKEY&
android:value=&58b278f6f29d983ee60016e6& &&/meta-data&//QQActivity
需要去openqq 去注册你的APPID
把换成你的 tencent不能变&activity
android:name=&com.umeng.qq.tencent.AuthActivity&
android:launchMode=&singleTask&
android:noHistory=&true& &
&intent-filter&
&action android:name=&android.intent.action.VIEW& /&
&category android:name=&android.intent.category.DEFAULT& /&
&category android:name=&android.intent.category.BROWSABLE& /&
&data android:scheme=&tencent& /&
&/intent-filter&&/activity&&activity
android:name=&com.umeng.qq.tencent.AssistActivity&
android:screenOrientation=&portrait&
android:theme=&@android:style/Theme.Translucent.NoTitleBar&
android:configChanges=&orientation|keyboardHidden|screenSize&/&四,创建自己的application public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
kqfpNVOuG9oMLruW--APPKEY
PlatformConfig.setQQZone(&&,&kqfpNVOuG9oMLruW&);
}}五,编写Activity package com.example.wuhan.import android.app.Aimport android.content.Cimport android.content.Iimport android.content.SharedPimport android.graphics.Bimport android.graphics.BitmapFimport android.net.Uimport android.os.AsyncTimport android.os.Bimport android.view.Vimport android.widget.Bimport android.widget.ImageVimport android.widget.TextVimport android.widget.Timport com.umeng.socialize.UMAuthLimport com.umeng.socialize.UMShareAPI;import com.umeng.socialize.bean.SHARE_MEDIA;import java.io.IOEimport java.io.InputSimport java.net.HttpURLCimport java.net.MalformedURLEimport java.net.URI;import java.net.URL;import java.util.Mimport java.util.Spublic class MainActivity extends Activity implements View.OnClickListener {
private ImageView img;
private TextView tv;
private Button btn;
UMShareAPI api;
private SharedPreferences sp;
private String name;
private String image_url;
private Bitmap bitmap;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
private void init() {
//创建SharedPreferences保存QQ名、头像
sp = getSharedPreferences(&kk&, Context.MODE_PRIVATE);
img = (ImageView) findViewById(R.id.img);
tv = (TextView) findViewById(R.id.tv);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
api.get(this).onActivityResult(requestCode, resultCode, data);
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn:
api = UMShareAPI.get(this);
SHARE_MEDIA platform = SHARE_MEDIA.QQ;
api.doOauthVerify(this, platform, umAuthListener);
private UMAuthListener umAuthListener = new UMAuthListener() {
public void onStart(SHARE_MEDIA share_media) {
public void onComplete(SHARE_MEDIA platform, int action, Map&String, String& data) {
// Toast.makeText(MainActivity.this, &Authorize succeed&, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, &登录成功&, Toast.LENGTH_SHORT).show();
//友盟API获得平台信息
api.getPlatformInfo(MainActivity.this, platform,
new UMAuthListener() {
public void onError(SHARE_MEDIA arg0, int arg1, Throwable arg2) {
public void onStart(SHARE_MEDIA share_media) {
public void onComplete(SHARE_MEDIA arg0, int arg1, Map&String, String& data) {
Set&String& set = data.keySet();
SharedPreferences.Editor edit = sp.edit();
for (String string : set) {
// 获得头像图片的网络地址
if (string.equals(&profile_image_url&)) {
image_url = data.get(string);
// 设置昵称
if (string.equals(&screen_name&)) {
name = data.get(string);
edit.putString(&image&, image_url);
edit.putString(&name&, name);
tv.setText(name);
new MyAsync().execute(image_url);
public void onCancel(SHARE_MEDIA arg0, int arg1) {
public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
public void onCancel(SHARE_MEDIA share_media, int i) {
class MyAsync extends AsyncTask&String,String,Bitmap&{
protected Bitmap doInBackground(String... params) {
URL url=new URL(image_url);
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(3000);
connection.setRequestMethod(&GET&);
connection.setDoInput(true);
connection.setUseCaches(false);
if(connection.getResponseCode()==200){
InputStream inputStream=connection.getInputStream();
bitmap= BitmapFactory.decodeStream(inputStream);
inputStream.close();
return bitmap;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
return null;
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
img.setImageBitmap(bitmap);
最新教程周点击榜
微信扫一扫

我要回帖

更多关于 积分墙 的文章

 

随机推荐