編輯:關於Android編程
1、申請注冊你的appid
2、下載sdk
QQ: http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD
微信:https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN
3、將下載的文件
導入進工程下的app/libs/下,liba開頭的的微信需要的,另外兩個是QQ需要的
閱讀官方文檔QQ:http://wiki.open.qq.com/wiki/mobile/API%E8%B0%83%E7%94%A8%E8%AF%B4%E6%98%8E
微信:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN
PS 微信需要安裝簽名生成工具輸入包名申請。
4、在 AndroidManifest.xml 中配置
微信:
QQ:
5、接下來就是代碼,微信還需要在報名下指定文件夾中新建指定類名的activity
WXEntryActivity類:
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler { private final String APP_ID= "你的appid"; private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 通過WXAPIFactory工廠,獲取IWXAPI的實例 api = WXAPIFactory.createWXAPI(this, APP_ID, false); api.registerApp(APP_ID); api.handleIntent(getIntent(), this); } //微信發送消息給app,app接受並處理的回調函數 @Override public void onReq(BaseReq req) { } //app發送消息給微信,微信返回的消息回調函數,根據不同的返回碼來判斷操作是否成功 @Override public void onResp(BaseResp resp) { int result = 0; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: result = R.string.errcode_success; break; case BaseResp.ErrCode.ERR_USER_CANCEL: result = R.string.errcode_cancel; break; case BaseResp.ErrCode.ERR_AUTH_DENIED: result = R.string.errcode_deny; break; default: result = R.string.errcode_unknown; break; } Toast.makeText(this, result, Toast.LENGTH_LONG).show(); finish(); } }
ShareActivity類:
public class ShareActivity extends BaseActivity implements View.OnClickListener { private final String W_APPID = "wxd70e5a411362e82b"; private IWXAPI api; private final String Q_APPID = "1105648864"; private Tencent mTencent; private Button quit; private ImageView qZone; private ImageView qq; private ImageView weichat; private ImageView weichatFriend; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.share_popup); regToWx(); regToQQ(); setBaseActionbar(); initView(); } private void regToQQ() { // Tencent類是SDK的主要實現類,開發者可通過Tencent類訪問騰訊開放的OpenAPI。 // 其中APP_ID是分配給第三方應用的appid,類型為String。 mTencent = Tencent.createInstance(Q_APPID, mContext); } private void regToWx() { api = WXAPIFactory.createWXAPI(this, W_APPID, true); api.registerApp(W_APPID); } private void initView() { quit = (Button) findViewById(R.id.quit); qZone = (ImageView) findViewById(R.id.qzone); qq = (ImageView) findViewById(R.id.qq); weichat = (ImageView) findViewById(R.id.weichat); weichatFriend = (ImageView) findViewById(R.id.weichat_friend); actionbarLeft.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); quit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); qZone.setOnClickListener(this); qq.setOnClickListener(this); weichat.setOnClickListener(this); weichatFriend.setOnClickListener(this); } @Override protected void onDestroy() { super.onDestroy(); } private void setBaseActionbar() { setActionbarLeft(R.mipmap.pixel_ic_toolbar_back); setActionbarTitle("分享", "SAHRE"); hideActionbarRight(); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.qzone: // mLog("點擊QQ空間"); qq(true); break; case R.id.qq: // mLog("點擊QQ"); qq(false); break; case R.id.weichat: // mLog("點擊威信"); weiChat(0); break; case R.id.weichat_friend: // mLog("點擊朋友圈"); weiChat(1); break; default: break; } } private void qq(boolean flag) { if (mTencent.isSessionValid() && mTencent.getOpenId() == null) { mToast("您還未安裝QQ", 0); } final Bundle params = new Bundle(); params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_APP); params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的標題"); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要"); params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif"); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "測試應用222222"); if(flag){ params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); } mTencent.shareToQQ(ShareActivity.this, params, new ShareListener()); } // 0-分享給朋友 1-分享到朋友圈 private void weiChat(int flag) { if (!api.isWXAppInstalled()) { mToast("您還未安裝微信", 0); return; } //創建一個WXWebPageObject對象,用於封裝要發送的Url WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = "http://www.mojichina.com/"; //創建一個WXMediaMessage對象 WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = "測試"; msg.description = "這是我做的一款天氣類app,高端大氣上檔次,快來看看吧!"; SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = String.valueOf(System.currentTimeMillis());//transaction字段用於唯一標識一個請求,這個必須有,否則會出錯 req.message = msg; //表示發送給朋友圈 WXSceneTimeline 表示發送給朋友 WXSceneSession req.scene = flag == 0 ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline; api.sendReq(req); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { ShareListener myListener = new ShareListener(); Tencent.onActivityResultData(requestCode, resultCode, data, myListener); } private class ShareListener implements IUiListener { @Override public void onCancel() { mToast("分享取消", 0); } @Override public void onComplete(Object arg0) { mToast("分享成功", 0); } @Override public void onError(UiError arg0) { mToast("分享出錯", 0); } } }
代碼應該一目了然,actionbarLeft是BaseActivity中的,無視就行,接下來是幾張截圖,應該看的更明白。
QQ分享不出去,是因為appid的問題,大家可以去查一下。
隨著移動互聯網的快速發展,它已經和我們的生活息息相關了,在公交地鐵裡面都能看到很多人的人低頭看著自己的手機屏幕,從此“低頭族”一詞就產生了,作為一名移動行業的開發人員,我
前言 一個好的應用需要一個有良好的用戶體驗的登錄界面,現如今,許多應用的的登錄界面都有著用戶名,密碼一鍵刪除,用戶名,密碼
Adapter的作用:數據在adapter中做了處理之後,顯示在視圖上 一般的對於ArrayAdapter來說,只需要把一個數組和一個樣式傳遞給ArrayAdapter之
相對與屬性動畫視圖動畫使用環境:view animation system提供的能力只能夠為View添加動畫。因此如果你想為非View對象添加動畫,就必須自己去實現,vi