​微信开放平台-官方文档-Android接入指南​

​微信开放平台-官方文档-Android资源下载​

文章目录

运行官方demo

想要运行官方的demo可能需要以下几步

  1. 上面下载的项目可能报错,首先修改​​gradle-wrapper.properties​​​中的d​​istributionUrl​​​为你目前项目用的路径,​​build.gradle​​​中的​​com.android.tools.build:gradle​​​改为现在项目用的版本
    还有一些报错,按照提示修复即可
  2. 添加release版本的签名配置
  3. ​build.gradle​​​中的​​applicationId​​改为现在项目的applicationId
  4. Contants中APP_ID改为自己申请的
  5. 然后以release运行即可
  6. 如果需要有回调结果,还需要把文件夹的名字改成和上边的applicationId相同的文件夹名。具体操作是:选择图中图标,把Compact MIddle Packages前边√去掉

例如我的applicationId是com.aa.bb

那么,从末级开始修改马赛克遮住的文件夹名称:右键-refactor-rename
Android APP整合微信分享_Android
Android APP整合微信分享_微信_02

自己项目

build.gradle添加依赖

api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

添加权限

<uses-permission android:name="android.permission.INTERNET" />

<!-- for mta statistics, not necessary-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

注册到微信

可以参照上面下载的Android资源写

private static final String APP_ID = "wx......";
// IWXAPI 是第三方app和微信通信的openApi接口
private IWXAPI api;
// 通过WXAPIFactory工厂,获取IWXAPI的实例
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
// 将应用的appId注册到微信
api.registerApp(APP_ID);

分享文字

复制demo中代码即可

public class MainActivity extends AppCompatActivity {
private static final String APP_ID = "wx......";
// IWXAPI 是第三方app和微信通信的openApi接口
private IWXAPI api;

private Button btn1;
private String text;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 通过WXAPIFactory工厂,获取IWXAPI的实例
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
// 将应用的appId注册到微信
api.registerApp(APP_ID);

text = "你好";
btn1 = findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
WXTextObject textObj = new WXTextObject();
textObj.text = text;

WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textObj;
// msg.title = "Will be ignored";
msg.description = text;
msg.mediaTagName = "我是mediaTagName啊";

SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("text");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;

api.sendReq(req);
}
});
}

private String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
}

如果 添加release版本的签名配置都配置好了,那么选择release即可运行了

Android APP整合微信分享_android_03

分享到朋友圈

只需修改刚才代码

//req.scene = SendMessageToWX.Req.WXSceneSession;
req.scene = SendMessageToWX.Req.WXSceneTimeline;

其他分享内容例如分享图片等,参照demo中代码即可

分享之后回调

如果你的程序需要接收微信发送的请求,或者接收发送到微信请求的响应结果,需要下面 3 步操作:
a. 在你的包名相应目录下新建一个 wxapi 目录,并在该 wxapi 目录下新增一个 WXEntryActivity 类,该类继承自 Activity(例如应用程序的包名为 net.sourceforge.simcpux,则新添加的类如下图所示)
Android APP整合微信分享_微信分享_04
manifest中注册

<activity
android:name=".wxapi.WXEntryActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="true"
android:taskAffinity="net.sourceforge.simcpux"
android:launchMode="singleTask">
</activity>

b. 实现 IWXAPIEventHandler 接口,微信发送的请求将回调到 onReq 方法,发送到微信请求的响应结果将回调到 onResp 方法
c.接收intent

当微信发送请求到你的应用,将通过 IWXAPIEventHandler 接口的 onReq 方法进行回调,类似的,应用请求微信的响应结果将通过 onResp 回调

一个基本的WXEntryActivity代码如下:

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
private static final String APP_ID = "wx......";
private IWXAPI api;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

api = WXAPIFactory.createWXAPI(this, APP_ID, false);

try {
Intent intent = getIntent();
api.handleIntent(intent, this);
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);

setIntent(intent);
api.handleIntent(intent, this);
}

@Override
public void onReq(BaseReq req) {

}

@Override
public void onResp(BaseResp resp) {
int result = 0;

switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
result = R.string.errcode_success;
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
result = R.string.errcode_cancel;
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
result = R.string.errcode_deny;
break;
case BaseResp.ErrCode.ERR_UNSUPPORT:
result = R.string.errcode_unsupported;
break;
default:
result = R.string.errcode_unknown;
break;
}

Toast.makeText(this, getString(result) + ", type=" + resp.getType(), Toast.LENGTH_SHORT).show();
finish();
}
}

Android APP整合微信分享_android_05
这是最基本的,其他附加功能,参考demo中的代码