微信SDK开发学习第三课

  • 时间:
  • 出处:跟我学网络
  • 作者:
  • 浏览:557

标签:微信   sdk   android   朋友圈   

等了一天,审核终于通过了。

上节课用的是官方Demo,这节课就开始自己写代码来实现朋友圈分享功能吧!

实战朋友圈分享功能

1. 点击查看AppID以及审核成功后获取的接口权限。

2. 新建安卓工程

  这里我们先新建一个包名为“com.xingyun.WebChatDemo01”的安卓工程。

3.下载微信终端开发工具包

https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/WeChatSDK_Android221cbf.zip


说明:
doc目录下是API文档,
lib目录下是必须要导入sdk库,用于实现与微信的通信

4.复制libmmsdk.jar到自己的工程lib目录中

5.加载libammsdk.jar

     右键单击工程——Build Path——Configure Build Path…——Libraries——Add Jars…——浏览lib目录下的文件。

6.添加必要的权限支持

    打开 AndroidManifest.xml,添加代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xingyun.WebChatDemo01"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="19" />
 <!-- 添加WiFi以及访问网络的权限  -->  
 <uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 <!-- 操作外部存储设备文件的权限  -->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

7.我们先修改建立几个触发事件的按钮

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.xingyun.WebChatDemo01.MainActivity" >

    <Button 
        android:id="@+id/RegToWXBtn"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="将该app注册到微信"
    />

    <Button 
        android:id="@+id/ShareMyFriends"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="分享到朋友圈"
    />

    <Button 
        android:id="@+id/ShareMyFriend"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="分享到微信朋友"
    />

    <Button 
        android:id="@+id/UnInstallRegToWXBtn"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="将该app反注册到微信"
    />

</LinearLayout>

7.编写后台代码

      这里我将官方方法简单修改封装了下,方便理解和查看。

注意:
1.由于项目并未正式发布,故只可以分享一次。
2.使用时需要将自己项目的app_ID作为参数传递。
3.本文中的app_ID已经失效,将申请的app_ID在替换代码中的即可。
MainActivity.java代码如下:

package com.xingyun.WebChatDemo01;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.tencent.mm.sdk.modelmsg.WXMediaMessage;
import com.tencent.mm.sdk.modelmsg.WXTextObject;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.modelmsg.SendMessageToWX;
import com.tencent.mm.sdk.openapi.WXAPIFactory;

public class MainActivity extends Activity {
    private Button regToWXButton;
    private Button shareMyFriendsButton;
    private Button shareMyFriendButton;
    private Button uninstallRegToWX;

    /****
     * 
     * App_ID:你的应用从官方网站申请到的合法AppID
     * 
     * apiIWXAPI:第三方app和微信通信的接口openapi接口
     * 
     * */
    private static final String App_ID="wx6ea568db9327fd2a";
    private IWXAPI apiIwxapi;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载布局
        setContentView(R.layout.activity_main);

        //查找控件id
        regToWXButton=(Button)findViewById(R.id.RegToWXBtn);
        shareMyFriendsButton=(Button)findViewById(R.id.ShareMyFriends);
        shareMyFriendButton=(Button)findViewById(R.id.ShareMyFriend);
        uninstallRegToWX=(Button)findViewById(R.id.UnInstallRegToWXBtn);

        //点击按钮将app注册到微信
        regToWXButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                //传入自己项目申请成功的App_ID和自定义的微信接口通信IWXAPI类型的变量
                RegToWX(apiIwxapi,App_ID);
                //注册app到微信成功提示
                Toast.makeText(getApplicationContext(),"注册app到微信成功",Toast.LENGTH_LONG).show();
            }
        });

        //点击按钮将内容分享到朋友圈
        shareMyFriendsButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //分享的内容
                String shareString="自己的app微信发送朋友圈测试语句";
                //分享到朋友圈的方法
                ShareMessageToFriends(apiIwxapi,shareString);

            }
        });
        //点击按钮将内容分享到朋友
        shareMyFriendButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String shareFriendString="自己的app分享到朋友测试语句";
                ShareMessageToFriend(apiIwxapi,shareFriendString);
            }
        });

        //卸载反注册app到微信
        uninstallRegToWX.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                UninstallRegToWX(apiIwxapi);
                Toast.makeText(getApplicationContext(),"卸载app反注册到微信成功",Toast.LENGTH_LONG).show();
            }
        });
    }



    /**
     * 注册到微信调用方法:RegToWX(IWXAPI apiIwxapi,String App_ID);
     * 分享到朋友圈调用方法:ShareMessageToFriends(IWXAPI apiIwxapi,String shareString);
     * 分享到朋友调用方法:ShareMessageToFriend(IWXAPI apiIwxapi,String shareString);
     * 反注册到微信调用方法:UninstallRegToWX(IWXAPI apiIwxapi);
     * */


    //注册到微信方法
    private void RegToWX(IWXAPI apiIwxapi,String App_ID){

        //通过WXAPIFactory工厂获取IWXAPI的实例
        apiIwxapi=WXAPIFactory.createWXAPI(this, App_ID,true);

        //将应用注册到微信
        apiIwxapi.registerApp(App_ID);
    }

    //分享到朋友圈方法
    private void ShareMessageToFriends(IWXAPI apiIwxapi,String shareString){

        //初始化一个WXTextObject对象
        WXTextObject textObject=new WXTextObject();
        textObject.text=shareString;

        //用WXTextObject对象初始化一个WXMediaMessage对象
        WXMediaMessage msgMediaMessage=new WXMediaMessage(textObject);
        msgMediaMessage.description=shareString;

        //构造一个Req
        SendMessageToWX.Req req=new SendMessageToWX.Req();

        // transaction字段用于唯一标识一个请求  这里用当前时间,因为时间秒和毫秒值是唯一的。
        req.transaction=String.valueOf(System.currentTimeMillis());

        /**
         * SendMessageToWX.Req的scene成员
         * scene默认值为WXSceneSession。分享到微信朋友
         * 如果scene填WXSceneTimeline那么消息会发送至朋友圈。
        */
        req.scene=SendMessageToWX.Req.WXSceneTimeline;//分享到朋友圈
        req.message = msgMediaMessage;

        // 调用api接口发送数据到微信
        apiIwxapi.sendReq(req);
    }

    //分享给微信朋友方法
    private void ShareMessageToFriend(IWXAPI apiIwxapi,String shareString){

        //初始化一个WXTextObject对象
        WXTextObject textObject=new WXTextObject();
        textObject.text=shareString;

        //用WXTextObject对象初始化一个WXMediaMessage对象
        WXMediaMessage msgMediaMessage=new WXMediaMessage(textObject);
        msgMediaMessage.description=shareString;

        //构造一个Req
        SendMessageToWX.Req req=new SendMessageToWX.Req();

        // transaction字段用于唯一标识一个请求  这里用当前时间,因为时间秒和毫秒值是唯一的。
        req.transaction=String.valueOf(System.currentTimeMillis());

        /**
         * SendMessageToWX.Req的scene成员
         * scene默认值为WXSceneSession。分享到微信朋友
         * 如果scene填WXSceneTimeline那么消息会发送至朋友圈。
         */
        req.scene=SendMessageToWX.Req.WXSceneSession;//分享到朋友
        req.message = msgMediaMessage;

        // 调用api接口发送数据到微信
        apiIwxapi.sendReq(req);
    }

    //卸载反注册app到微信方法
    private void UninstallRegToWX(IWXAPI apiIwxapi){
        apiIwxapi.unregisterApp();
    }
}

测试效果如图所示:

版权声明:本文为博主原创文章,未经博主允许不得转载。