Android微信SDK API 呼叫教程

來源:互聯網
上載者:User

 最近一直在調用的API,卻發現一直調用不成功,糾結了好久,各方面找教程,找官方,官方裡的文檔也只是寫得很模糊,說是按三步走。

1、申請App_ID

2、填寫包名3、

擷取程式簽名的md5值,

這三步只要你走對了就能調通,可是大家都不知道有時候我們打包的keystore和我們打包的keystore擷取到的程式簽名的md5是不一樣的。我們在申請的時候填的程式簽名值是正式打包的,但我們在eclipse部署上去的卻是用的我們預設的debug.keystore.而這樣導致的後果就是程式簽名不一樣,會一直調不通。甚至我們都不知道我們錯在哪。

先說一下怎麼部署官網下的demo吧:【下面引用的內容為官網】

對Android  API調用是需要嚴格 的三個驗證,只有app_id包名和程式簽名完全對了的情況下才可以調得通。

如何運行sdkdemo工程

 

1、解壓sdk demo工程壓縮包,並匯入到workspace,如:

 

 

2、選擇Eclipse頂部菜單Window->Preferences,在彈出的對話方塊中,選擇Android目錄下的Build,如:

 

 

 

指定Custom debugkeystore選項的路徑為sdk demo工程目錄中的debug.keystore檔案,如:

 

 

並應用該配置。

 

3、運行該sdk_sample工程。

 

好了,按以上三步走,你就能走通的DEMO,現在再來看我們自己的DEMO

1、custom Debugkeystore:換成我們自己的keystore

、
 

2、裝上我們的應用到手機端,再去官網下載一個擷取程式簽名md5值的apk輸入包名:


 

3、去後台申請我們調試的應用:


 

接著再寫上範例程式碼中的代碼:


[java] 
private Button btn_share; 
   public static final String WX_APP_ID = "wxc85b9dbef61b3fe4"; 
  
   private IWXAPI api; 
  
   private String text="testssss"; 
   @Override 
   public void onCreate(BundlesavedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
  
      btn_share = (Button)findViewById(R.id.btn_share); 
  
      api = WXAPIFactory.createWXAPI(this, WX_APP_ID,false); 
      
      
      
  
      btn_share.setOnClickListener(new OnClickListener() { 
  
         @Override 
         public void onClick(View v) { 
            api.registerApp(WX_APP_ID); 
            // 初始化一個WXTextObject對象  
            WXTextObjecttextObj = newWXTextObject(); 
            textObj.text = text; 
  
            // 用WXTextObject對象初始化一個WXMediaMessage對象  
            WXMediaMessagemsg = newWXMediaMessage(); 
            msg.mediaObject = textObj; 
            // 發送文本類型的訊息時,title欄位不起作用  
             msg.title = "Will be ignored"; 
            msg.description = "sdddd"; 
  
            // 構造一個Req  
            SendMessageToWX.Reqreq = newSendMessageToWX.Req(); 
            req.transaction = buildTransaction("text"); // transaction欄位用於唯一標識一個請求  
            req.message = msg; 
            //req.scene = SendMessageToWX.Req.WXSceneTimeline ;  
            
            // 調用api介面發送資料到  
            api.sendReq(req); 
            finish(); 
         } 
      }); 
   } 
  
   private StringbuildTransaction(finalString type) { 
      return (type == null) ? String.valueOf(System.currentTimeMillis()) 
            :type + System.currentTimeMillis(); 
   } 

private Button btn_share;
   public static final String WX_APP_ID = "wxc85b9dbef61b3fe4";
 
   private IWXAPI api;
 
   private String text="testssss";
   @Override
   public void onCreate(BundlesavedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
 
      btn_share = (Button)findViewById(R.id.btn_share);
 
      api = WXAPIFactory.createWXAPI(this, WX_APP_ID,false);
    
    
    
 
      btn_share.setOnClickListener(new OnClickListener() {
 
         @Override
         public void onClick(View v) {
            api.registerApp(WX_APP_ID);
            // 初始化一個WXTextObject對象
            WXTextObjecttextObj = newWXTextObject();
            textObj.text = text;
 
            // 用WXTextObject對象初始化一個WXMediaMessage對象
            WXMediaMessagemsg = newWXMediaMessage();
            msg.mediaObject = textObj;
            // 發送文本類型的訊息時,title欄位不起作用
             msg.title = "Will be ignored";
            msg.description = "sdddd";
 
            // 構造一個Req
            SendMessageToWX.Reqreq = newSendMessageToWX.Req();
            req.transaction = buildTransaction("text"); // transaction欄位用於唯一標識一個請求
            req.message = msg;
            //req.scene = SendMessageToWX.Req.WXSceneTimeline ;
          
            // 調用api介面發送資料到
            api.sendReq(req);
            finish();
         }
      });
   }
 
   private StringbuildTransaction(finalString type) {
      return (type == null) ? String.valueOf(System.currentTimeMillis())
            :type + System.currentTimeMillis();
   } www.2cto.com

至此,大功告成。千萬別忘記你程式打包用的keysotre再用那個提供的程式打包擷取到簽名和你在eclpise程式部署擷取到的簽名是不一樣的。我們可以再申請一個正式的應用,填寫資訊可以完全一樣,但是只要改掉

 


和你的app_id

 


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.