首先微信開(kāi)放平臺(tái)申請(qǐng)應(yīng)用,分享需要用到appId,
去微信開(kāi)放平臺(tái)去申請(qǐng)應(yīng)用,獲取appId
首先在你的項(xiàng)目下的build中添加依賴
/**微信分享*/
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
在你的Appliction中初始化
// 三個(gè)參數(shù)分別是上下文、應(yīng)用的appId、是否檢查簽名(默認(rèn)為false)
IWXAPI mWxApi = WXAPIFactory.createWXAPI(this, "你的appId", false);
// 注冊(cè)
mWxApi.registerApp("你的appId");
工具類,方便調(diào)用
public class WxShareUtils {
/**
* 分享網(wǎng)頁(yè)類型至微信
*
* @param context 上下文
* @param appId 微信的appId
* @param webUrl 網(wǎng)頁(yè)的url
* @param title 網(wǎng)頁(yè)標(biāo)題
* @param content 網(wǎng)頁(yè)描述
* @param bitmap 位圖
*/
public static void shareWeb(Context context, String appId, String webUrl, String title, String content, Bitmap bitmap) {
// 通過(guò)appId得到IWXAPI這個(gè)對(duì)象
IWXAPI wxapi = WXAPIFactory.createWXAPI(context, appId);
// 檢查手機(jī)或者模擬器是否安裝了微信
if (!wxapi.isWXAppInstalled()) {
ToastUtil.makeText("您還沒(méi)有安裝微信");
return;
}
// 初始化一個(gè)WXWebpageObject對(duì)象
WXWebpageObject webpageObject = new WXWebpageObject();
// 填寫(xiě)網(wǎng)頁(yè)的url
webpageObject.webpageUrl = webUrl;
// 用WXWebpageObject對(duì)象初始化一個(gè)WXMediaMessage對(duì)象
WXMediaMessage msg = new WXMediaMessage(webpageObject);
// 填寫(xiě)網(wǎng)頁(yè)標(biāo)題、描述、位圖
msg.title = title;
msg.description = content;
// 如果沒(méi)有位圖,可以傳null,會(huì)顯示默認(rèn)的圖片
msg.setThumbImage(bitmap);
// 構(gòu)造一個(gè)Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
// transaction用于唯一標(biāo)識(shí)一個(gè)請(qǐng)求(可自定義)
req.transaction = "webpage";
// 上文的WXMediaMessage對(duì)象
req.message = msg;
// SendMessageToWX.Req.WXSceneSession是分享到好友會(huì)話
// SendMessageToWX.Req.WXSceneTimeline是分享到朋友圈
req.scene = SendMessageToWX.Req.WXSceneSession;
// 向微信發(fā)送請(qǐng)求
wxapi.sendReq(req);
}
}
最后:在app模塊包的根目錄下新建一個(gè)wxapi的包,在這個(gè)包下面新建一個(gè)WXEntryActivity
image.png
這個(gè)WXEntryActivity就是個(gè)普通的Activity,以下是布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
下面就是這個(gè)Activity的代碼:
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
private IWXAPI wxapi;
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
wxapi.handleIntent(intent, this);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wxentry);
wxapi = WXAPIFactory.createWXAPI(this, "你的appId");
wxapi.handleIntent(getIntent(), this);
}
/**
* 微信發(fā)送請(qǐng)求到第三方應(yīng)用時(shí),會(huì)回調(diào)到該方法
*/
@Override
public void onReq(BaseReq baseReq) {
// 這里不作深究
}
/**
* 第三方應(yīng)用發(fā)送到微信的請(qǐng)求處理后的響應(yīng)結(jié)果,會(huì)回調(diào)到該方法
* app發(fā)送消息給微信,處理返回消息的回調(diào)
*/
@Override
public void onResp(BaseResp baseResp) {
switch (baseResp.errCode) {
// 正確返回
case BaseResp.ErrCode.ERR_OK:
switch (baseResp.getType()) {
// ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX是微信分享,api自帶
case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
// 只是做了簡(jiǎn)單的finish操作
finish();
break;
default:
break;
}
break;
default:
// 錯(cuò)誤返回
switch (baseResp.getType()) {
// 微信分享
case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
Log.i("WXEntryActivity" , ">>>errCode = " + baseResp.errCode);
finish();
break;
default:
break;
}
break;
}
}
}
最后需要在manifests文件中申明這個(gè)Activity,代碼如下:
<activity
// 下面三行代碼必須要有
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTop"
// 下面兩行代碼可有可無(wú)
android:screenOrientation="portrait"
// 指定一個(gè)主題,這里是無(wú)標(biāo)題、半透明的主題
android:theme="@style/NoTitleTranslucent80Theme"/>
使用方法:
WxShareUtils.shareWeb(MineInfoActivity.this,"wx1592484bde4cc4c6",
"","歡迎您使用", "您的好友邀請(qǐng)您一起賺錢了!",
BitmapFactory.decodeResource(mContext.getResources(), R.drawable.logo));//我這里加載的是本地drawable下的圖片
原文鏈接:https://blog.csdn.net/baidu_35559769/article/details/82497289