微信SDK开发学习第三课

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

上节课用的是官方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();
    }
}

测试效果如图所示:

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

时间: 2024-10-11 13:41:04

微信SDK开发学习第三课的相关文章

微信SDK开发学习第一课

1.为什么学习微信API开发? 微信注册用户6亿,把微信当做推广平台已经成为主流. 2.微信SDK主要功能有哪些? 主要功能:分享给朋友,分享到朋友圈 3.如何使用微信SDK? 3.1 打开微信SDK主页注册账号:https://open.weixin.qq.com/ 3.2 点击管理中心-->移动应用-->创建移动应用:填写基本信息 移动应用名称:微信SDK学习第一课 英文名称(选填):WebChat SDK interface to learn one. 移动应用简介:学习微信开发第一课

微信SDK开发学习

public class MainActivity extends Activity { // 应用程序的id,就是在网上开发平台创建应用的appid public static final String APP_ID = "wx00e5fafe00473016"; // 微信api的访问变量 private IWXAPI iwxapi; private CheckBox mshareFriends; @Override protected void onCreate(Bundle s

【ios开发学习 - 第三课】UITextField使用

//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enum { UITextBorderStyleNone, UITextBorderStyleLine, UITextBord

安卓学习第三课——常见布局

1.相对布局 简单的说,就是通过描述每个组件所在的位置,使用的layout_below等,就是控制组件与组件之间的位置关系. 2.绝对布局 就是通过描述他的x,y坐标来确定位置 3.线性布局 有两种是水平和竖直对其方式,一般情况下整体会使用线性布局,来排列众多的组件 3.帧布局 我感觉就是一层一层的,默认的情况下,多个组件是在同一个位置,所以你需要去修改位置.同时可以选择是否显示. 这可以用来描述视频播放器暂停键的控制方法. 代码如下. <?xml version="1.0" e

微信SDK开发——接口接入

园子里面很多关于微信接口开发的文章,Github也一堆的开源代码. 官方文档地址:http://mp.weixin.qq.com/wiki/home/index.html 接下来主要以代码为主,接口说明自己去看文档 验证接入需要一个80端口的外网服务器地址,在填写地址,Token信息之后,程序会验证接入 验证会像就扣地址通过GET的方式发送几个数据: signature,timestamp, nonce, echostr(该参数仅仅在验证接入时候会带上) 接下来就是你服务端接口验证签名的可用性了

微信sdk开发

前段时间部门要做一个活动,在微信实现.具体涉及到一下几个功能点:获取用户基本信息,判断用户是否关注我们公众号,自定义分享链接(包括朋友圈和好友),图片上传. 先说配置微信API,怎么在公众号后台配置,微信的文档已经很全面了:http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html,需要说明的就是,url是完整的域名,不要带后面的参数.因为分享和上传都是jssdk的内容,所以还需要在公众号后台配置,参考:http:/

微信开发学习日记(三):6点经验

1.token验证和微信请求响应token验证,用get方法. 微信请求入口,用psot方法. 一个微信公众号或者轻应用的入口,就是一个url,同一个url分为get和post. get的时候,4个参数都不为空,必须校验. post的时候,也要校验参数,只是不用输出echostr.post的时候,echostr可能为空,是否要检查echostr是否为空呢?既然不用输出,按说不需要校验.2.接口访问凭证access_token每次获得一次凭证,有一定的过期时间.也就是说,可以缓存起来.暂时还没仔细

tobii SDK开发学习

最近实验室用到tobii的眼动仪,从网上了解了下,tobii是瑞典的眼跟踪技术开发商,今年似乎有上市计划,不知道市值多少 买了仪器后试用了下,还算可以,将来配合人体设备开发,不过配套软件还需要花钱买.导师崩溃了,于是交代咱们自己动手 一来给实验室省点经费,二来之后可能围绕眼动仪开发相关的软件.So,let's get started 一.文档 tobii的SDK开发包还算完善,支持windows,linux,MacOS系统,也支持比较主流的编程语言,也提供了开发者文档 用了两天时间看了看文档,只

web多终端开发学习系列(三)--- 基于bootstrap的表格插件bootstrap-table

基于网页管理系统的开发大多数功能只是对数据的显示与操作,对于数据的显示一般都是通过table表格来显示,所以管理系统的开发很有必要引入表格插件,对于sencha touch等商业化框架,都有自己自带的表格控件,而对于bootstrap需要引入第三方的表格插件,这里我学习下bootstrap table. 介绍 bootstrap table是基于bootstrap框架的一个表格插件,官网地址是http://wenzhixin.net.cn/p/bootstrap-table/docs/index