您的位置:首页 > 移动开发 > 微信开发

android微信分享

2015-04-08 17:46 141 查看
下文只讨论使用友盟分享微信,qq等实现方式,

微信分享主要还是三步,第一,申请appkey,申请的时候需要填写keystore文件中的md5和packagename,注意填写的时候需要将eclipse打包最后一步中的md5中间的冒号去掉,另外,将大写换成小写,最后也就是一个字符串,将这个字符串填写进去才行,

微信开放平台地址:

https://open.weixin.qq.com/

检验是否填写正确可以去微信开放平台下载Gen_Signature_Android.apk,打开这个apk,填写进去你要申请appkey的packagename,获取到md5,如果和你填写的一致,说明填写正确,否则,填写错误。

apk下载地址:

https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk

第二步:等待审核通过,目前只有审核通过的才可以进行分享,审核通过后,会给你一个appid,appsecret,这俩个字段需要在代码中用到。

第三步:编码完成分享,两个思路,第一个可以直接在友盟的官网中下载demo,然后替换appid,appsecret,替换keystore文件,就是将demo中的keystore文件替换系统默认的debug.keystore文件,第二个,可以下载已经写好的示例demo,比如umeng_third_login,然后还是替换appid,appsecret,替换keystore文件。

这里是否分享成功需要正确配置manifest文件,如下
<!-- 分享内容编辑页 -->
        <activity
            android:name="com.umeng.socialize.view.ShareActivity"
            android:configChanges="orientation|keyboard"
            android:launchMode="singleTask"
            android:noHistory="true"
            android:theme="@style/Theme.UMDialog"
            android:windowSoftInputMode="stateVisible|adjustResize" >
        </activity>

        <!-- 腾讯SSO授权的Activity注册 -->
        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="tencent100424468" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- 微信回调activity -->
        <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- 易信回调activity -->
        <activity
            android:name=".yxapi.YXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- 人人SSO授权所需的OAuthActivity -->
        <activity
            android:name="com.renn.rennsdk.oauth.OAuthActivity"
            android:configChanges="orientation|navigation|keyboardHidden" />

        <!-- facebook相关 -->
        <activity android:name=".activity.FacebookActivity" >
        </activity>
        <activity
            android:name="com.facebook.LoginActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />


然后在代码中创建包,wxapi目录,新建WXEntryAcivity类,如果想处理分享返回事件,可以写具体代码,如果不想处理,直接写一个空继承也行,比如:

public class WXEntryActivity extends WXCallbackActivity {

}


也可以写:

/** 微信客户端回调activity示例 */  
    public class WXEntryActivity extends Activity implements IWXAPIEventHandler {  
        // IWXAPI 是第三方app和微信通信的openapi接口  
        private IWXAPI api;  
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            api = WXAPIFactory.createWXAPI(this, "这里替换第一步申请的APP_ID", false);  
            api.handleIntent(getIntent(), this);  
            super.onCreate(savedInstanceState);  
        }  
        @Override  
        public void onReq(BaseReq arg0) { }  
      
        @Override  
        public void onResp(BaseResp resp) {  
            LogManager.show(TAG, "resp.errCode:" + resp.errCode + ",resp.errStr:"  
                    + resp.errStr, 1);  
            switch (resp.errCode) {  
            case BaseResp.ErrCode.ERR_OK:  
                //分享成功  
                break;  
            case BaseResp.ErrCode.ERR_USER_CANCEL:  
                //分享取消  
                break;  
            case BaseResp.ErrCode.ERR_AUTH_DENIED:  
                //分享拒绝  
                break;  
            }  
        }  
    }
同样,这个类需要在manifest中声明,然后在需要分享的地方直接编写分享代码就可以:

例如:

/**
	 * @功能描述 : 添加微信平台分享
	 * @return
	 */
	private void addWXPlatform() {
		// 注意:在微信授权的时候,必须传递appSecret
		// wx967daebe835fbeac是你在微信开发平台注册应用的AppID, 这里需要替换成你注册的AppID
		String appId = "xxxxx";
		String appSecret = "xxxxxxxxxxxxxxxxxx";
		// 添加微信平台
		UMWXHandler wxHandler = new UMWXHandler(SettingsActivity.this, appId,
				appSecret);
		wxHandler.addToSocialSDK();

		// 支持微信朋友圈
		UMWXHandler wxCircleHandler = new UMWXHandler(SettingsActivity.this,
				appId, appSecret);
		wxCircleHandler.setToCircle(true);
		wxCircleHandler.addToSocialSDK();
	}


mController.getConfig().setPlatforms(SHARE_MEDIA.WEIXIN,
				SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SMS);
		mController.openShare(SettingsActivity.this, false);


这样就打包签名处apk以后,就可以分享微信,朋友圈了。

注意keystore文件,在调试状态下,需要将正确的keystore文件替换debug.keystore文件才行,否则分享不成功,还有manifest文件中权限需要声明正确完整。

如果都填写正确,还是分享不正确,提示errcode_deny的话,请尝试清理微信的缓存和数据,再进行尝试分享,或许就可以分享成功。

以上是微信分享,qq分享类似,稍微比微信分享简单点。

参考链接:
http://www.cnblogs.com/android100/p/Android-qq.html http://bbs.umeng.com/thread-7768-1-1.html http://www.360doc.com/content/14/0908/06/9200790_407759192.shtml http://bbs.umeng.com/forum.php?mod=viewthread&tid=5832&extra=page%3D1%26filter%3Ddigest%26digest%3D1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: