Android呼び出し微信Api

2951 ワード

最近のプロジェクトでは、微信の共有を追加する必要があります:友达、友达の輪.
簡単なことだと思っていたのは、公式サイトの次のDemoに行って、自分のプロジェクトに統合して、分を分けて解決することができて、結局、このドキュメントを書くお父さんたちは、私のN余りの時間を浪費して、ツッコミが終わって、次に今回の呼び出しの微信の中で出会った問題と解決方法を共有します.
まず最初の問題は、微信クライアントを呼び出すことができないことです.
原因:いわゆる公式説明に従って操作されていないので、
解決方法:1)微信を付ける項目にパッケージ署名をすると,その時に自分のkeystoreがある.
2)パッケージされたapkをマシンに装着し、公式の署名取得ツールを装着する:gen_signature.apkは、このツールを使用してアプリケーション署名を生成します.
3)取得した署名で現在のプロジェクトに対応する微信アプリを申請する_IDは、プロジェクトでの呼び出しが成功することを保証します.
もう一つの質問:画像と文字を共有する
このセクションは直接コードされます.
1)単純な文字内容を共有する:
IWXAPI api = WXAPIFactory.createWXAPI(this, ShareConstant.APP_ID);
			
			if (api.openWXApp()) {//           
			String text = ShareConstant.setContent(
					response.getCategoryNamePinYin(), response.getAuctionId());

			//      WXTextObject  
			WXTextObject textObj = new WXTextObject();
			textObj.text = text;

			//  WXTextObject       WXMediaMessage  
			WXMediaMessage msg = new WXMediaMessage();
			msg.mediaObject = textObj;
			//           ,title      
			// msg.title = "Will be ignored";
			msg.description = text;

			//     Req
			SendMessageToWX.Req req = new SendMessageToWX.Req();
			req.transaction = buildTransaction("text"); //
			// transaction            
			req.message = msg;
			req.scene = SendMessageToWX.Req.WXSceneSession;//   
			//   api         
			api.sendReq(req);
			 } else {
			 Toast.makeText(Detail.this, "     ", Toast.LENGTH_SHORT).show();
			 }

2)写真と文字を共有する:
/**
	 *        
	 * 
	 * @param context
	 * @param text
	 * @param bmp
	 * @param type       :SendMessageToWX.Req.WXSceneTimeline      :SendMessageToWX.Req.WXSceneSession
	 */
	public void sendReq(Context context, String text, Bitmap bmp, int type) {
		// IWXAPI api = WXAPIFactory.createWXAPI(context, ShareConstant.APP_ID,
		// true);
		if (api.openWXApp()) {
			String url = ShareConstant.setUrl(response.getCategoryNamePinYin(),
					response.getAuctionId());//                   
			WXWebpageObject localWXWebpageObject = new WXWebpageObject();
			localWXWebpageObject.webpageUrl = url;
			WXMediaMessage localWXMediaMessage = new WXMediaMessage(
					localWXWebpageObject);
			
			localWXMediaMessage.description = text;

			//         
			Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE,
					THUMB_SIZE, true);
			bmp.recycle();
			localWXMediaMessage.thumbData = Util.bmpToByteArray(thumbBmp, true);

			// localWXMediaMessage.thumbData = getBitmapBytes(bmp, false);
			SendMessageToWX.Req localReq = new SendMessageToWX.Req();
			localReq.transaction = System.currentTimeMillis() + "";
			localReq.message = localWXMediaMessage;
			// localReq.scene = SendMessageToWX.Req.WXSceneTimeline;//       
			// localReq.scene = SendMessageToWX.Req.WXSceneSession;//      
			localReq.scene = type;

			api.sendReq(localReq);
		} else {
			Toast.makeText(Detail.this, "     ", Toast.LENGTH_SHORT).show();
		}
	}