首先微信開放平臺申請應用,分享需要用到appId,
去微信開放平臺去申請應用瞳浦,獲取appId
首先在你的項目下的build中添加依賴
/**微信分享*/
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
在你的Appliction中初始化
// 三個參數分別是上下文废士、應用的appId、是否檢查簽名(默認為false)
IWXAPI mWxApi = WXAPIFactory.createWXAPI(this, "你的appId", false);
// 注冊
mWxApi.registerApp("你的appId");
工具類官硝,方便調用
public class WxShareUtils {
/**
* 分享網頁類型至微信
*
* @param context 上下文
* @param appId 微信的appId
* @param webUrl 網頁的url
* @param title 網頁標題
* @param content 網頁描述
* @param bitmap 位圖
*/
public static void shareWeb(Context context, String appId, String webUrl, String title, String content, Bitmap bitmap) {
// 通過appId得到IWXAPI這個對象
IWXAPI wxapi = WXAPIFactory.createWXAPI(context, appId);
// 檢查手機或者模擬器是否安裝了微信
if (!wxapi.isWXAppInstalled()) {
ToastUtil.makeText("您還沒有安裝微信");
return;
}
// 初始化一個WXWebpageObject對象
WXWebpageObject webpageObject = new WXWebpageObject();
// 填寫網頁的url
webpageObject.webpageUrl = webUrl;
// 用WXWebpageObject對象初始化一個WXMediaMessage對象
WXMediaMessage msg = new WXMediaMessage(webpageObject);
// 填寫網頁標題氢架、描述、位圖
msg.title = title;
msg.description = content;
// 如果沒有位圖岖研,可以傳null,會顯示默認的圖片
msg.setThumbImage(bitmap);
// 構造一個Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
// transaction用于唯一標識一個請求(可自定義)
req.transaction = "webpage";
// 上文的WXMediaMessage對象
req.message = msg;
// SendMessageToWX.Req.WXSceneSession是分享到好友會話
// SendMessageToWX.Req.WXSceneTimeline是分享到朋友圈
req.scene = SendMessageToWX.Req.WXSceneSession;
// 向微信發(fā)送請求
wxapi.sendReq(req);
}
}
最后:在app模塊包的根目錄下新建一個wxapi的包害淤,在這個包下面新建一個WXEntryActivity
這個WXEntryActivity就是個普通的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>
下面就是這個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ā)送請求到第三方應用時,會回調到該方法
*/
@Override
public void onReq(BaseReq baseReq) {
// 這里不作深究
}
/**
* 第三方應用發(fā)送到微信的請求處理后的響應結果溪王,會回調到該方法
* app發(fā)送消息給微信值骇,處理返回消息的回調
*/
@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:
// 只是做了簡單的finish操作
finish();
break;
default:
break;
}
break;
default:
// 錯誤返回
switch (baseResp.getType()) {
// 微信分享
case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
Log.i("WXEntryActivity" , ">>>errCode = " + baseResp.errCode);
finish();
break;
default:
break;
}
break;
}
}
}
最后需要在manifests文件中申明這個Activity道伟,代碼如下:
<activity
// 下面三行代碼必須要有
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTop"
// 下面兩行代碼可有可無
android:screenOrientation="portrait"
// 指定一個主題,這里是無標題蜜徽、半透明的主題
android:theme="@style/NoTitleTranslucent80Theme"/>
使用方法:
WxShareUtils.shareWeb(MineInfoActivity.this,"wx1592484bde4cc4c6",
"","歡迎您使用", "您的好友邀請您一起賺錢了!",
BitmapFactory.decodeResource(mContext.getResources(), R.drawable.logo));//我這里加載的是本地drawable下的圖片
原文鏈接:https://blog.csdn.net/baidu_35559769/article/details/82497289