微信开发平台(一)
本講內(nèi)容:微信開發(fā)平臺(一)
?
?
一、注冊開發(fā)帳號并申請一個開發(fā)APP(申請中填寫的包名必須和程序包名一樣)? https://open.weixin.qq.com/
?參考文章:http://blog.csdn.net/icyfox_bupt/article/details/23742217
示例一:分享文本(要導(dǎo)入微信jar包)
????
下面是res/layout/activity_main.xml 布局文件:
<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" ><CheckBoxandroid:id="@+id/checkBox1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="CheckBox" /><Button android:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="onClick_Start_Weixin"android:text="啟動微信"/><Button android:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="onClick_Send_Text"android:text="發(fā)送文本"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="發(fā)送二進制圖像"android:onClick="onClick_Send_Binary_image" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="發(fā)送本地圖像"android:onClick="onClick_Send_Local_Image" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="發(fā)送Url圖像"android:onClick="onClick_Send_Url_Image" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="發(fā)送Url音頻" android:onClick="onClick_Send_Url_Audio"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="發(fā)送Url視頻"android:onClick="onClick_Send_Url_Video" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="發(fā)送URL"android:onClick="onClick_Send_Url" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="發(fā)送表情"android:onClick="onClick_Send_Emotion" /></LinearLayout>
下面是MainActivity.java主界面文件:
public class MainActivity extends Activity {//應(yīng)用程序的IDpublic static final String APP_ID="wxf3268a18cc7d13f8";//初始化private IWXAPI api;private CheckBox mshareFriends;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);api = WXAPIFactory.createWXAPI(this,APP_ID,false);//將APP_ID注冊到微信中api.registerApp(APP_ID);mshareFriends = (CheckBox) findViewById(R.id.checkBox1);}//啟動微信客戶端public void onClick_Start_Weixin(View view){//打開了就返回trueToast.makeText(MainActivity.this, String.valueOf(api.openWXApp()), Toast.LENGTH_SHORT).show();}//為請求生成一個唯一的標(biāo)識private String buildTransaction(final String type){return (type==null)?String.valueOf(System.currentTimeMillis()):type + String.valueOf(System.currentTimeMillis());}//向好友或朋友圈發(fā)送文本(要將APP_ID注冊到微信中才可以使用)public void onClick_Send_Text(View view){//創(chuàng)建EditText控件,用于輸入文本final EditText editor = new EditText(this);editor.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));editor.setText("默認(rèn)的分享文本");final AlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setIcon(android.R.drawable.ic_dialog_alert);builder.setTitle("共享文本");//將EditText控件與對話框綁定builder.setView(editor);builder.setMessage("請輸入分享的文本");builder.setPositiveButton("分享", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//獲取待分享的文本String text = editor.getText().toString();if (text == null || text.length() == 0) {return;}//第一步:創(chuàng)建一個用于封裝待分享文本的WXTextObject對象WXTextObject textObj = new WXTextObject();textObj.text = text;//第二步:創(chuàng)建WXMediaMessage對象,該對象用于Android客戶端向微信發(fā)送數(shù)據(jù)WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = textObj;msg.description = text;//第三步:創(chuàng)建一個用于請求微信客戶端的SendMessageToWX.Req對象SendMessageToWX.Req req = new SendMessageToWX.Req();req.message = msg;//設(shè)置請求的唯一標(biāo)識req.transaction = buildTransaction("text");//表示發(fā)送給朋友,還是朋友圈req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;//第四步:發(fā)送給微信客戶端Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();}});builder.setNegativeButton("取消",null);final AlertDialog alert = builder.create();alert.show();}//將bitmap轉(zhuǎn)換成byte格式的數(shù)組public byte[] bmpToByteArray(final Bitmap bitmap, final boolean needRecycle){ByteArrayOutputStream output =new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);if(needRecycle){bitmap.recycle();}byte[] result = output.toByteArray();try {output.close();} catch (Exception e) {e.printStackTrace();}return result;}//發(fā)送二進制圖像public void onClick_Send_Binary_image(View view){//第一步:獲取二進制圖像的Bitmap對象Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.window);//第二步:創(chuàng)建WXImageObject對象,并包裝bitmapWXImageObject imgObj =new WXImageObject(bitmap);//第三步:創(chuàng)建WXMediaMessage對象,并包裝WXImageObject對象WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = imgObj;//第四步:壓縮圖像(注意圖片太大會返回false)Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, 80, 120, true);//釋放圖像所占用的內(nèi)存資源bitmap.recycle();msg.thumbData = bmpToByteArray(thumbBmp, true);//設(shè)置縮略圖//第五步:創(chuàng)建SendMessageTo.Req對象,用于發(fā)送數(shù)據(jù)SendMessageToWX.Req req=new SendMessageToWX.Req();req.transaction=buildTransaction("img");req.message=msg;req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();finish();}//發(fā)送本地圖像public void onClick_Send_Local_Image(View view){//第一步:判斷圖像文件是否存在String path = "/sdcard/window.png";File file=new File(path);if(!file.exists()){Toast.makeText(MainActivity.this, "圖片不存在", Toast.LENGTH_LONG).show();return;}//第二步:創(chuàng)建WXImageObject對象,并設(shè)置pathWXImageObject imgObj =new WXImageObject();//設(shè)置圖像文件路徑imgObj.setImagePath(path);//第三步:創(chuàng)建WXMediaMessage對象,并包裝WXImageObject對象WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = imgObj;//第四步:壓縮圖像(注意圖片太大會返回false) // Bitmap bitmap=BitmapFactory.decodeFile("/sdcard/window.png"); // Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, 60, 60, true);//不知為什么這里出錯了,知道的朋友可以說下 // // //釋放圖像所占用的內(nèi)存資源 // bitmap.recycle(); // msg.thumbData = bmpToByteArray(thumbBmp, true);//設(shè)置縮略圖//第五步:創(chuàng)建SendMessageTo.Req對象,用于發(fā)送數(shù)據(jù)SendMessageToWX.Req req=new SendMessageToWX.Req();req.transaction=buildTransaction("img");req.message=msg;req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;api.sendReq(req);}//發(fā)送Url圖像public void onClick_Send_Url_Image(View view){Thread thread=new Thread(new Runnable() {public void run() {try {//第一步:創(chuàng)建WXImageObject對象,并設(shè)置urlString url="https://img-my.csdn.net/uploads/201309/01/1378037235_3453.jpg";WXImageObject imgObj =new WXImageObject();//設(shè)置圖像的UrlimgObj.imageUrl=url;//第二步:創(chuàng)建WXMediaMessage對象,并包裝WXImageObject對象WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = imgObj;//第三步:壓縮圖像(注意圖片太大會返回false)Bitmap bitmap=BitmapFactory.decodeStream(new URL(url).openStream());Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, 80, 120, true);//釋放圖像所占用的內(nèi)存資源bitmap.recycle();msg.thumbData = bmpToByteArray(thumbBmp, true);//設(shè)置縮略圖//第四步:創(chuàng)建SendMessageTo.Req對象,用于發(fā)送數(shù)據(jù)SendMessageToWX.Req req=new SendMessageToWX.Req();req.transaction=buildTransaction("img");req.message=msg;req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;api.sendReq(req);} catch (Exception e) {e.printStackTrace();}}});thread.start();}//發(fā)送url形式的音頻public void onClick_Send_Url_Audio(View view){//第一步:創(chuàng)建WXImageObject對象,并設(shè)置urlWXMusicObject music=new WXMusicObject();music.musicUrl="http://play.baidu.com/?__m=mboxCtrl.playSong&__a=256019864&__o=/||netsongIcon#";//第二步:創(chuàng)建WXMediaMessage對象WXMediaMessage msg = new WXMediaMessage();msg.mediaObject=music;msg.title="明天";msg.description="演唱:韓磊";//第三步:設(shè)置縮略圖Bitmap thumb=BitmapFactory.decodeResource(getResources(), R.drawable.window);msg.thumbData=bmpToByteArray(thumb, true);//第四步:創(chuàng)建SendMessageTo.Req對象,用于發(fā)送數(shù)據(jù)SendMessageToWX.Req req=new SendMessageToWX.Req();req.transaction=buildTransaction("music");req.message=msg;req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();}//發(fā)送url形式的視頻public void onClick_Send_Url_Video(View view){//第一步:創(chuàng)建WXImageObject對象,并設(shè)置urlWXVideoObject video=new WXVideoObject();video.videoUrl="http://v.youku.com/v_show/id_XnTuxNDYINDY4.html";//第二步:創(chuàng)建WXMediaMessage對象WXMediaMessage msg = new WXMediaMessage();msg.mediaObject=video;msg.title="喬布斯訪談";msg.description="看看喬幫主說了什么";//第三步:設(shè)置縮略圖Bitmap thumb=BitmapFactory.decodeResource(getResources(), R.drawable.window);msg.thumbData = bmpToByteArray(thumb, true);//第四步:創(chuàng)建SendMessageTo.Req對象,用于發(fā)送數(shù)據(jù)SendMessageToWX.Req req=new SendMessageToWX.Req();req.transaction=buildTransaction("music");req.message=msg;req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();}//發(fā)送URLpublic void onClick_Send_Url(View view){//第一步:創(chuàng)建WXWebPageObject對象,并設(shè)置urlWXWebpageObject webpage=new WXWebpageObject();webpage.webpageUrl="http://www.imooc.com/souse/List";//第二步:創(chuàng)建一個WXMediaMessage對象WXMediaMessage msg=new WXMediaMessage(webpage);msg.title="幕課網(wǎng)";msg.description="教學(xué)視頻的";//第三步:設(shè)置縮略圖Bitmap thumb=BitmapFactory.decodeResource(getResources(), R.drawable.window);msg.thumbData = bmpToByteArray(thumb, true);//第四步:創(chuàng)建SendMessageTo.Req對象,用于發(fā)送數(shù)據(jù)SendMessageToWX.Req req=new SendMessageToWX.Req();req.transaction=buildTransaction("webpage");req.message=msg;req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();finish();}public void onClick_Send_Emotion(View view){//第一步:創(chuàng)建WXWebPageObject對象,用于封裝表情文件的路徑String EMOJI_FILE_PATH="/sdcard/emotion.gif";WXEmojiObject emoji=new WXEmojiObject();emoji.emojiPath=EMOJI_FILE_PATH;//第二步:創(chuàng)建一個WXMediaMessage對象WXMediaMessage msg=new WXMediaMessage(emoji);msg.title="表情標(biāo)題";msg.description="表情描述";//第三步:設(shè)置縮略圖Bitmap thumb=BitmapFactory.decodeResource(getResources(), R.drawable.window);msg.thumbData = bmpToByteArray(thumb, true);//第四步:創(chuàng)建SendMessageTo.Req對象,用于發(fā)送數(shù)據(jù)SendMessageToWX.Req req=new SendMessageToWX.Req();req.transaction=buildTransaction("emotion");req.message=msg;req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();finish();} }
<uses-permission android:name="android.permission.INTERNET"/>
總結(jié)
- 上一篇: django mysql 教程_Djan
- 下一篇: 浅谈小微企业智能化财务转型