微信登录

1.build.gradle:

applicationId "com.jo.jingou"(这一块设置成与开发平台里一致的包名)
compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
2.values-strings:
<string name="errcode_success">发送成功</string>
<string name="errcode_cancel">发送取消</string>
<string name="errcode_deny">发送被拒绝</string>
<string name="errcode_unsupported">不支持错误</string>
<string name="errcode_unknown">发送返回</string>
3.清单文件:
 
 
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!-- for mta statistics -->
<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"/>
 
 
 
 
<activity
    android:name="com.jo.jingou.wxapi.WXEntryActivity"
    android:label="@string/app_name"
    android:exported="true"
    android:launchMode="singleTop">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="sdksample"/>
    </intent-filter>
</activity>
<receiver
    android:name=".AppRegister"
    android:permission="com.tencent.mm.plugin.permission.SEND" >
    <intent-filter>
        <action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
    </intent-filter>
</receiver>
 
 
4.AppRegister:
 
 
public class AppRegister extends BroadcastReceiver {

   @Override
   public void onReceive(Context context, Intent intent) {
      final IWXAPI api = WXAPIFactory.createWXAPI(context, null);
      api.registerApp("wxbd3e6bba8efbae73");
   }
}
 
 
5.MainActivity:
 
 
public class MainActivity extends AppCompatActivity {

    private TextView denglu;
    // IWXAPI 是第三方app和微信通信的openapi接口
    private IWXAPI api;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 通过WXAPIFactory工厂,获取IWXAPI的实例
        api = WXAPIFactory.createWXAPI(this,"wxbd3e6bba8efbae73", false);
        denglu = (TextView) findViewById(R.id.denglu);
        denglu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // send oauth request
                final SendAuth.Req req = new SendAuth.Req();
                req.scope = "snsapi_userinfo";
                req.state = "wechat_sdk_demo_test";
                api.sendReq(req);
            }
        });

    }

}
 
 
6.jo.jingou.wxapi(包名)
     WXEntryActivity:(类名):
 
 
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
    private IWXAPI api;
    private TextView textView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);
        textView = (TextView) findViewById(R.id.textView);
        api = WXAPIFactory.createWXAPI(this, "wxbd3e6bba8efbae73", false);
        //注意:
        //第三方开发者如果使用透明界面来实现WXEntryActivity,需要判断handleIntent的返回值,如果返回值为false,则说明入参不合法未被SDK处理,应finish当前透明界面,避免外部通过传递非法参数的Intent导致停留在透明界面,引起用户的疑惑
        try {
            api.handleIntent(getIntent(), 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 baseReq) {

    }

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

        switch (resp.errCode) {
            case BaseResp.ErrCode.ERR_OK:
                SendAuth.Resp su= (SendAuth.Resp) resp;
                textView.setText(su.code);
                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, result, Toast.LENGTH_LONG).show();
    }



}

猜你喜欢

转载自blog.csdn.net/yuejunfei/article/details/77752511