等了一天,审核终于通过了。
上节课用的是官方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();
}
}
测试效果如图所示:
版权声明:本文为博主原创文章,未经博主允许不得转载。