ps: 個人使用的環(huán)境是mac電腦蹬叭,android studio 3.0;
到微信公眾平臺申請應(yīng)用賬號
1.公眾平臺地址https://open.weixin.qq.com
-
申請流程,按照要求認(rèn)真填寫
-
申請通過之后塑娇,查看應(yīng)用詳情會看到有一個appId,這個要記住,后面會用到
生成上面需要填寫應(yīng)用簽名
- 創(chuàng)建一個keystore文件,這個keystore文件要記住鸳吸,后面會用到
```
keytool -genkey -alias wx_share -keyalg RSA -validity 10000 -keystore wx_share.keystore
```
-
上面步驟會得到wx_share.keystore文件脆荷,通過以下命令查看該文件的md5值
ps: 其實我們在申請的時候,需要填寫的應(yīng)用簽名就是該md5值轉(zhuǎn)成小寫策橘,并且去掉中間的冒號就得到了
-
我們通過以下方式進行驗證,先創(chuàng)建一個android應(yīng)用
-
使用上面我們生成的keystore文件簽名該應(yīng)用得到apk文件,并安裝到手機上面
-
下載簽名生成工具
簽名生成工具下載(微信開發(fā)平臺)
-
用簽名生成工具查看應(yīng)用的簽名
- 我們看到上面得到的簽名就是我們之前說的md5轉(zhuǎn)成小寫亏狰,并且去掉中間的分號的到的役纹,把該簽名拷貝到我們注冊的時候需要的填寫的簽名的地方就可以了
- 到這里我們就完成注冊了,下面要用原生實現(xiàn)分享到微信好友或者朋友圈了
應(yīng)用程序配置微信分享相關(guān)配置
- 在AndroidManifest.xml配置相關(guān)權(quán)限
<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"/>
<uses-permission android:name="android.permission.ACTION_HANDLE_APP_REGISTER"/>
-
下載微信SDK
-
在build.gradle文件中暇唾,添加如下依賴即可
-
```
dependencies {
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}
```
-
重新編譯依賴文件
分享web網(wǎng)頁到朋友圈或者好友
- 編碼過程
public class MainActivity extends AppCompatActivity {
private static final int THUMB_SIZE = 150; //設(shè)置分享到朋友圈的縮略圖寬高大小
private static final String APP_ID = "wx17fa470c77da3077"; //應(yīng)用appId,就是我們注冊應(yīng)用成功之后得到的appId
private IWXAPI api;
private Button btnShare;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
api = WXAPIFactory.createWXAPI(this, APP_ID, true);//創(chuàng)建一個實例
api.registerApp(APP_ID);//注冊實例
btnShare = (Button) findViewById(R.id.btn_share);//獲取頁面中的某個按鈕
btnShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {//創(chuàng)建一個子線程
@Override
public void run() {
try{
//遠程獲取的縮略圖的圖片地址
String url = "http://weixin.qq.com/zh_CN/htmledition/images/weixin/weixin_logo20f761.png";
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = "http://www.baidu.com";//分享出去的網(wǎng)頁地址
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "標(biāo)題";//分享的標(biāo)題
msg.description = "描述";//分享的描述信息
//獲取網(wǎng)絡(luò)圖片資源
Bitmap bmp = BitmapFactory.decodeStream(new URL(url).openStream());
//創(chuàng)建縮略圖
Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);
bmp.recycle();
msg.thumbData = bmpToByteArray(thumbBmp, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;//分享到微信好友
//req.scene = SendMessageToWX.Req.WXSceneTimeline;//分享到微信朋友圈
api.sendReq(req);
}catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
});
}
public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, output);
if (needRecycle) {
bmp.recycle();
}
byte[] result = output.toByteArray();
try {
output.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
- 運行應(yīng)用
-
當(dāng)編碼完成之后促脉,我們需要運行項目辰斋,這里有個主意點要主意,我們運行的時候android studio默認(rèn)用的是默認(rèn)的debug.keystore文件瘸味,并不是我們之前的創(chuàng)建的宫仗,所以我們要修改默認(rèn)簽名文件,過程如下
- 上面我們已將創(chuàng)建了release配置文件旁仿,我們現(xiàn)在修改默認(rèn)的debug.keystore文件為我們剛剛創(chuàng)建的
-
-
將項目運行到我們手機上面藕夫,然后點擊分享按鈕,發(fā)現(xiàn)已經(jīng)調(diào)起微信分享了
- 到這里枯冈,android原生調(diào)用微信分享已經(jīng)可以了毅贮,我們可以把該功能封裝成cordova插件,詳情請看該文章