整合微信登入和分享真的很簡單
阿新 • • 發佈:2019-02-18
轉載請以連結形式標明出處:
文末有demo.
準備工作
1.
去 這裡 註冊微信開放平臺的賬號,
下載 簽名生成工具 用來 獲取 應用簽名。
並不要下載sdk,
2.
再去友盟,
註冊一個賬號,
建立一個應用,獲取友盟的Appkey.
下載分享的sdk. 地址
再去根據下面連結新增好下載的jar包和資原始檔,
以及在manifest檔案中新增以下內容
<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.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" />
<activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <meta-data android:name="UMENG_APPKEY" android:value="561cae6ae0f55abd990035bf" />//修改為自己應用的umengappkey <activity android:name="com.umeng.socialize.editorpage.ShareActivity" android:excludeFromRecents="true" android:theme="@style/Theme.UMDefault" />
以及在主module包名下新增 package : wxapi,
在wxapi裡面新增WXEntryActivity.java,
如下:
package com.wtime_developer.wecaht.wxapi;
import com.umeng.weixin.callback.WXCallbackActivity;
public class WXEntryActivity extends WXCallbackActivity {
}
微信分享程式碼:
share(SHARE_MEDIA.WEIXIN);//微信
share(SHARE_MEDIA.WEIXIN_CIRCLE);//朋友圈
private void share(SHARE_MEDIA media) {
new ShareAction(acticity).setPlatform(media)
.withTitle("Title")
.withText("content")
.withMedia(new UMImage(context, R.mipmap.ic_launcher))//第二個引數也可以是網路圖片地址
.withTargetUrl("url")//修改為你要分享的連結
.setCallback(umShareListener)
.share();
}
private UMShareListener umShareListener = new UMShareListener() {
@Override
public void onResult(SHARE_MEDIA platform) {
Toast.makeText(context, " 分享成功啦", Toast.LENGTH_SHORT).show();
finish();
}
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(context, " 分享失敗啦", Toast.LENGTH_SHORT).show();
finish();
}
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(context, " 分享取消了", Toast.LENGTH_SHORT).show();
finish();
}
};
登入程式碼:
private void login() {
UMShareAPI mShareAPI = UMShareAPI.get(context);
if (mShareAPI.isInstall(acticity, SHARE_MEDIA.WEIXIN)) {//判斷是否安裝微信
mShareAPI.doOauthVerify(acticity, SHARE_MEDIA.WEIXIN, umAuthListener);//授權
}
}
private UMAuthListener umAuthListener = new UMAuthListener() {
@Override
public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
//授權成功
UMShareAPI mShareAPI = UMShareAPI.get(context);
mShareAPI.getPlatformInfo(acticity, SHARE_MEDIA.WEIXIN, umAuthListener1);//獲取使用者資訊
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText(context, "授權失敗", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText(context, "授權取消", Toast.LENGTH_SHORT).show();
}
};
private UMAuthListener umAuthListener1 = new UMAuthListener() {
@Override
public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
//把友盟返回的資訊 轉化為微信的實體類
String json = "{\"openid\":\"" + map.get("openid") + "\","
+ "\"nickname\":\"" + map.get("screen_name") + "\","
+ "\"sex\":\"" + map.get("gender") + "\","
+ "\"province\":\"" + map.get("province") + "\","
+ "\"city\":\"" + map.get("city") + "\","
+ "\"country\":\"" + map.get("country") + "\","
+ "\"headimgur\":\"" + map.get("profile_image_url") + "\","
+ "\"privilege\":[],"
+ "\"unionid\":\"" + map.get("unionid") + "\"}";
//再呼叫你們後臺寫的微信登入相關的介面,
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText(context, "獲取使用者資訊失敗", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText(context, "取消獲取使用者資訊", Toast.LENGTH_SHORT).show();
}
};
注意事項:
1.確保微信開放平臺上的 包名和應用簽名準確(配置好籤名 安裝好之後 再用這工具獲取簽名)。 應用簽名生成工具
2.修改了 app/MyApplication裡的appid 和 appsecret
3.修改umeng module裡manifest裡面的umengappkey
4.在app.build 弄好相應的簽名信息
5.確保混淆檔案新增
有問題 歡迎留言.
如果你喜歡我的部落格,請關注我。