private UMShareAPI mShareAPI;
//第三方登录
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();
}
};
//----------------------------------------------
位于onCreate下
//第三方登录
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
mShareAPI = UMShareAPI.get( this );
//====================
//第三方登录
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mShareAPI.onActivityResult(requestCode, resultCode, data);
}
//-------------------------------
点击事件中
SHARE_MEDIA platform = SHARE_MEDIA.QQ;
mShareAPI.doOauthVerify(this, platform, umAuthListener);
//==============
Xml文件中
<uses-permission android:name="android.permission.INTERNET" />
<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_LOGS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<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中
<!-- 其中增加一个activity -->
<activity
android:name="com.umeng.socialize.editorpage.ShareActivity"
android:excludeFromRecents="true"
android:theme="@style/Theme.UMDefault" />
<!-- 设置友盟appid -->
<meta-data
android:name="UMENG_APPKEY"
android:value="4eaee02c527015373b000003" />
<!-- 腾讯 -->
<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="tencent100424468" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
//----------------------------------
分析原因:从提示中可以清晰的看出在E:\workspace\DrivingTraining\libs\和E:\workspace \android-support-v7-appcompat\libs\这两个路径下各有一个v4包,大小分别约为600K和700K,所以是由于两个 v4包版本不同所造成的。
解决方案:将提示的两个目录复制到文件资源管理器打开,可以看到下面的v4包,复制其中一个覆盖另一个目录中的v4包,重新启动eclipse。
注意事项:
- 可能提示的不止两个目录,会有三个,但只要保持所有目录中的v4包一致即可。
- E:\workspace\android-support-v7-appcompat\libs\这个是我导进来的v7包,不只一个工程引用这个包,所以推荐将v7包中的v4包覆盖另一个目录(工程libs)的v4,以免引起其他引用此v7包的工程报错。
- 最好将所有的library存放在当前的工程位置下。