android實現微博分享功能實現
1. android應用實現分享到微博功能
1.Intent intent = new Intent(Intent.ACTION_SEND); //啟動分享發送的屬性
2. intent.setType("text/plain"); //分享發送的數據類型
3. intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); //分享的主題
4. intent.putExtra(Intent.EXTRA_TEXT, "extratext"); //分享的內容
5. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//這個也許是分享列表的背景吧
6. FenxiangActivity.this.startActivity(Intent.createChooser(intent, "分享"));//目標應用選擇對話框的標題
然後在Manifest的Activity下面加上:
1.<intent-filter Android:label="@string/albums_sendbyWBlog">
2. <action Android:name="android.intent.action.SEND" />
3. <data Android:mimeType="image/*" />
4.<category Android:name="android.intent.category.DEFAULT" />
5. </intent-filter>
2. android 怎麼快速實現新浪微博分享功能
Android進階之使用第三方平台ShareSDK實現新浪微博的一鍵分享功能。
ShareSDK是一種社會化分享組件,為iOS、Android、WP8
的APP提供社會化功能,集成了一些常用的類庫和介面,縮短開發者的開發時間,還有社會化統計分析管理後台。ShareSDK移動開發者服務平台由廣州掌淘網路科技有限公司開發。
3. 現在的android版SDK中,進行微博分享必須要通過微博客戶端嗎
本文介紹了如何在Android程序中使用新浪微博提供的AndroidSDK
微博Android平台SDK為第三方微博應用提供了文檔易用的微博API調用服務,使第三方客戶端無需了解復雜的驗證,API調用過程。並可以實現分享到微博的功能,可以分享文字,或者多媒體信息到內置的分享頁面,並發送到微博。
首先我們需要在新浪微博開放平台上進行注冊,之後需要創建一個新的應用,並且需要記下應用的APP key,App Secret Key以及設置應用的回調頁以便我們在程序中進行使用。此外,還需要在應用的高級信息里添加測試用戶的uid,切記切記,否則會出現登陸不成功等怪現象。
接著我們下載微博提供的Android上的SDK,下載地址在這里http。//open。weibo。com/wiki/SDK,選擇AndroidSDK進行下載即可。
使用方法:
首先將下載的sdk進行解壓,並將其導入到eclipse中,接著在你需要使用sdk的android工程中點擊右鍵,屬性,設置library屬性,選中剛才導入的weibosdk即可。如圖所示
然後在你的工程的Manifest文件中,加入以下許可權:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
這樣我們就能使用weibosdk了
建立工程以後如何在代碼中使用weiboAPI呢,下面就由我來為大家介紹使用方法:
首先在你需要使用微博的Activity中加入以下代碼:
Weibo weibo = Weibo.getInstance();
weibo.setupConsumerConfig(Constants.CONSUMER_KEY,Constants.CONSUMER_SECRET);
weibo.setRedirectUrl("Your URLhere");
weibo.authorize(this,
listener);
注意代碼中的Constants.CONSUMER_KEY,Constants.CONSUMER_SECRET即是文章開頭介紹的在微博上創建的應用里的兩個key,setRedirectUrl中的內容即是在應用中設置的回調頁。
Listener則是在進行登陸授權後對執行結果進行處理的Litener,代碼如下
public class AuthDialogListener implements WeiboDialogListener {
private Activity context;
private String content;
private String file;
private float lat;
private float lon;
private static boolean isOver=true;
public AuthDialogListener(Activity context,String content,String file,float lat,float lon){
this.context= context;
this.content=content;
this.file=file;
this.lat=lat;
this.lon=lon;
}
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
String oauth_verifier = values.getString("oauth_verifier");
AccessToken accessToken = new AccessToken(token, Constants.CONSUMER_SECRET);
accessToken.setExpiresIn(expires_in);
accessToken.setVerifier(oauth_verifier);
Weibo.getInstance().setAccessToken(accessToken);
try {
if (isOver) {
isOver=false;
share2weibo(this.content,null,listener,lat,lon);
}
} catch (WeiboException e) {
e.printStackTrace();
}
}
@Override
public void onError(DialogError e) {
Toast.makeText(context.getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(context.getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(context.getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
private void share2weibo(String content,String file,RequestListener listener,float lat , float lon) throws WeiboException {
Weibo weibo = Weibo.getInstance();
WeiboParameters params= new WeiboParameters();
params.add("access_token", weibo.getAccessToken().getToken());
params.add("status", content);
params.add("lat", String.valueOf(lat));
params.add("long", String.valueOf(lon));
String url = Weibo.SERVER + "statuses/update.json";
if (file!=null&&!file.equalsIgnoreCase("")) {
params.add("pic", file);
url = Weibo.SERVER + "statuses/upload.json";
}
AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);
runner.request(this.context, url, params,Utility.HTTPMETHOD_POST,listener);
}
RequestListener listener= new RequestListener() {
@Override
public void onIOException(IOException e) {
isOver=true;
Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onError(WeiboException e) {
isOver=true;
Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onComplete(String response) {
isOver=true;
Toast.makeText(context, "Success!", Toast.LENGTH_LONG).show();
}
};
}
需要完成WeiboDialogListener介面中的方法,分別是onComplete,OnError,
OnCancel,OnWeiboException。其中Oncomplete是在微博登陸授權成功後會執行的方法,在這個方法中,你可以調用你想要的功能如發表微博,轉發,評論等。使用的代碼可參看以下代碼:
Weibo weibo = Weibo.getInstance();
WeiboParameters params= new WeiboParameters();
params.add("access_token", weibo.getAccessToken().getToken());
params.add("status", content);
params.add("lat", String.valueOf(lat));
params.add("long", String.valueOf(lon));
String url = Weibo.SERVER + "statuses/update.json";
AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);
runner.request(this.context,url,params,Utility.HTTPMETHOD_POST,listener);
其中params是調用weibo api中需要的具體參數,可根據需要進行添加
AsyncWeiboRunner 是用來執行具體請求的類,根據你設定的參數發起請求。注意這里又有一個listerner,而這個listener是對發起請求後的結果進行處理的回調類,
RequestListener listener= new RequestListener()
需要復寫的方法有OnIOException,onError,onComplete,這樣可以清楚地對各種情況進行處理。
這樣在程序中就可以使用新浪微博 android sdk了。
4. android新浪微博客戶端的發微博功能是怎樣實現的
新建微博--->把數據傳到全部微博&個人微博頁面的activty上。
如果新建微博並不想發布,選擇退出。是Content Provider將數據儲存到資料庫中。便於恢復。
微博發布成功由Intent調到全部微博or個人微博。
一般來講由一個Intent請求發送微博。一個Activitiy處理發送微博的描述。Activity在Android Manifetst.xml文件中發布Intent。
5. 分享到新浪微博功能如何實現
只實現你說的功能的話可以去官網下載sdk的demo就可以 http://open.weibo.com/wiki/SDK#Android_SDK
6. 怎樣在微博開放平台獲取android分享與登錄功能
直接下載他的Demo,根據Demo做功能就可以了,不需要等到通過審核。
7. android開發的應用怎麼實現用sina微博賬號登入與應用中的圖片分享到sina微博
1、你需要支持用戶注冊
2、你需要在應用登錄的時候提供第三方平台的圖標
3、用戶點擊第三方平台圖標以後,你們嘗試判斷用戶是否已經授權
4、如果用戶授權,獲取他的唯一識別符,比方說WeiboDb裡面的weiboId這個欄位
5、如果用戶沒有授權,引導用戶授權,授權成功後也可以獲取weibo Id
6、然後用這個唯一識別符登錄你們的系統,如果用戶已經注冊,則應該讓用戶登錄到你們的系統,流程結束
7、如果你們的系統發現用戶沒有注冊,引導用戶進入你們應用的注冊頁面,並通過sharesdk的showuser方法獲取用戶資料,自動幫助用戶完成注冊資料的填寫,然後等待用戶確認
8、如果用戶確認了注冊信息,你們的應用就根據他的信息完成這注冊操作,如果操作成功,則應該讓用戶登錄到你們的系統,流程結束
8. 如何使用ShareSDK讓APP快速擁有分享功能
Android 集成指南 1 獲取ShareSDK 為了集成ShareSDK,您首先需要到ShareSDK 官方網站注冊並且創建應用,獲得 ShareSDK 的Appkey,然後到SDK 的下載頁面下載SDK 的壓縮包,解壓以後可以得到 下圖的四個目錄: 其中的Libs 包含ShareSDK 的類庫,Src 包含集成微信和新浪微博需要的回調,Res 是 開發者信息示例,而Sample 則包含一個完整的操作演示。 Libs 里具體包括三個文件夾,分別是ShareSDK 的全局依賴庫、ShareSDK 當前支持的 所有平台工具庫和ShareSDK 可視化UI 的一些支持庫。「全局依賴庫」是集成ShareSDK 的基礎,ShareSDK 的任何平台都依賴於這個庫,而「ShareSDK-GUI」提供的是一個側欄 控制項和一個快捷分享工具,以方便開發者更快速地集成ShareSDK。 2 快速集成 2-1 導入Libs 1) 將「Libs\Global-Dependences」下的jar 包復制到您的libs 目錄下。 2) 從「Libs\Platforms」中選擇您感興趣的平台,比方說「新浪微博」、「QQ 空間」、「騰訊 微博」等,復制相應的壓縮包您項目的libs 目錄下並解壓,解壓過程中如遇覆蓋提示, 請同意覆蓋。 3) 如果您決定使用ShareSDK 提供的快捷分享工具,請復制「Libs\ShareSDK-GUI」中復 制「cn.sharesdk.onekeyshare.jar」到您項目中。 4) 如果您的開發環境不能自動載入ShareSDK 的jar 包到您的項目中,請修改您項目 的構建路徑,將上述jar 包添加到您的項目中。下圖以Eclipse 為例,展示添加後的效果: 2-2 添加代碼 1) 打開您項目的入口Activity,在其onCreate 中插入下面的代碼: ? 1 AbstractWeibo.initSDK(this); 這行代碼用於初始化ShareSDK,必須在程序啟動之時調用。 2)使用下面的代碼,調用ShareSDK 快捷分享功能: 分享時Notification 的圖標 ? 01 02 03 04 05 06 07 08 09 Intent i = new Intent(this, ShareAllGird.class); // 分享時Notification 的圖標 i.putExtra("notif_icon", R.drawable.ic_launcher); // 分享時Notification 的標題 i.putExtra("notif_title", getString(R.string.app_name)); // 分享內容的標題(僅部分平台需要此欄位) i.putExtra("title", "ShareSDK Demo"); // 分享內容的文本 i.putExtra("text", "share at: " + System.currentTimeMillis()); 10 11 12 13 14 15 // 分享內容的本地圖片路徑(為null 或文件不存在表示不分享圖片) i.putExtra("image", Environment.getExternalStorageDirectory () + "/ssdk.png"); // 分享內容的網路圖片地址(僅部分平台需要此欄位) i.putExtra("image_url", "http://sharesdk.cn/Public/Frontend/images/logo.png"); // 設置是否跳轉內容編輯頁面,true 表示不跳轉,不傳遞表示false(跳轉) i.putExtra("silent", silent); startActivity(i); 3) 如果您的項目中集成微信平台,請將「Sample/src/cn/sharesdk/demo」中的「wxapi」 目錄復制到您的項目主包下。 4) 如果您的項目中集成微博平台,請將「Sample/src」中的「com」目錄復制到您的項目 中。 2-3 添加開發者信息 ShareSDK 使用統一的格式管理您在不同平台上注冊的開發者信息。這些信息都存放在 您項目的「assets/ShareSDKDevInfor.xml」中。請到「Res」中將ShareSDKDevInfor.xml 復 制到您項目的對應位置,打開文件,然後根據不同的平台的數據,如下面的例子所示, 替換您在這個平台上的開發者信息: ? 1 2 3 4 5 6 7 2-4 配置AndroidManifest.xml 1) 請在您項目的AndroidManifest.xml,添加了如下的所有許可權: ? 1 2 3 4 5 6 7 8 這些許可權將允許您的項目和ShareSDK 獲取連接網路的許可權、獲取您的設備網路狀態的 許可權、實現https 安全連接的許可權、讀取手機設備狀態的許可權和保存必要配置的許可權。 一般來說,即便不集成ShareSDK,大部分的項目也都會注冊申請這些許可權。 2)在application 下注冊下面的Activity: ? 1 2 3 4 5 6 7 3)如果您的項目集成為微信和新浪微博,在application 下注冊下面的Activity: ? 01 02 03 04 05 06 07 08 09 104)如果您的項目集微信,在application 下注冊下面的Activity: ? 1 2 3 4 5 5)如果您使用ShareSDK 的快捷分享工具,在application 下注冊下面的Activity: ? 01 02 03 04 05 06 07 08 09 2-5 簽名 對於ShareSDK 的大部分平台,只要您將其jar 包和依賴集成到您的項目以 後就可以開始進行工作了。但是對於微信的兩個平台卻不行。因為微信開放平台要求 android 的第三方開發者需要提供自己項目的信息和簽名指紋數據。為了演示分享功能 Sample 包中攜帶了一個"demokey.keystore"的keystore 文件,其密碼是「123456」,如 果您在調試SSDKDemo 的時候集成了微信的平台,就需要使用這個keystore 對apk 進 行簽名,之後才能嘗試微信的分享。 3 主要功能解釋 ShareSDK 使用同一的介面實現不同平台的同類操作,如:授權、分享、關注等等。因 此開發者可以在不理會平台差異的情況下,簡單使用一句代碼完成不同平台的各種操作。 3-1 獲取已集成的平台列表 下面的代碼演示獲取已經集成到您項目中的ShareSDK 平台列表: ? 1 AbstractWeibo[] weiboList = AbstractWeibo.getWeiboList(context) 返回的列表中平台的排列順序依照您在ShareSDKDevInfor.xml 中為其配置的SortId 來 定。 請注意,此方法在第一次調用的時候可能會比較耗時,因此不建議在主線程中調用。 3-2 通過名字獲取指定平台實例 除了getWeiboList 的方法可以獲取到平台實例以外,如果您想單獨獲取某一個平台的實 例,還可以利用下面的方法,若獲取騰訊微博的實例: ? 1 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, TencentWeibo.NAME); 其中的,其中的TencentWeibo.NAME 是騰訊微博平台的靜態欄位,每一個平台都有一 個NAME 的欄位,表示其名字。 3-3 設置操作回調 不論利用ShareSDK 進行何種操作,如果希望得到操作的結果,都必須為執行操作的平 台設置WeiboActionListener 的回調。下面的代碼演示對騰訊微博綁定 WeiboActionListener 的方法: ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, TencentWeibo.NAME); weibo.setWeiboActionListener( new WeiboActionListener() { public void onError(AbstractWeibo weibo, int action, Throwable t) { // 操作失敗的處理代碼 } public void onComplete(AbstractWeibo weibo, int action, HashMap res) { // 操作成功的處理代碼 } public void onCancel(AbstractWeibo weibo, int action) { // 操作取消的處理代碼 } } ); 3-4 授權 手動授權並不是必要的操作,但是ShareSDK 提供手動的授權操作,如下面的代碼演示 新浪微博的授權操作: ? 1 2 3 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.authorize(); 授權結果將通過WeiboActionListener 介面返回。 3-5 獲取用戶資料 下面的代碼演示新浪微博獲取資料的方法,其他的平台(微信除外)也支持類似的操作: ? 1 2 3 String account = "3189087725"; AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.showUser(account); 其中account 是准備獲取資料的帳號,如果account 為null,則表示獲取授權賬戶自己 的資料。 獲取資料前ShareSDK 會自行判斷平台是否已經授權,若未授權,會自行執行授權操作。 3-6 分享 下面的代碼演示通用的分享操作(QQ 空間、印象筆記請參考另外更合適其平台特性的 介面): ? 1 2 3 4 5 String text = 「測試分享的文本」; String image = 「/mnt/sdcard/測試分享的圖片.jpg」 ; AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.share(text, image); 其中的text 是分享的文本內容,image 是分享圖片的本地路徑。 微信好友和微信朋友圈的分享,應該使用新的分享介面,具體操作可以參考Sample 中 的相關例子,下面的例子展示使用微信分享網頁的方法: ? 1 2 3 4 5 6 7 8 AbstractWeibo weibo = AbstractWeibo.getWeibo(menu.getContext(), Wechat.NAME); weibo.setWeiboActionListener(this); String title = "這是標題"; String text = "這是文本內容"; String url = "http://sharesdk.cn"; String thumbUrl = "/mnt/sdcard/網頁縮略圖.jpg"; weibo.share(AbstractWeibo.SHARE_WEBPAGE, title, text, url, thumbUrl); 其中的share(int, Object…)方法是新版本添加的分享介面,暫時支持微信兩個平台的分 享,但後續版本的分享功能會往這個方法遷移。 QQ 空間調用下面的介面更適合其平台特性: ? 1 2 3 4 5 6 String title = 「測試分享的標題」 String text = 「測試分享的文本」; String imageUrl = 「[url]http://www.someserver.com/[/url]測試分享的圖片.jpg」 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, QZone.NAME); weibo.setWeiboActionListener(waListener); weibo.share(title, null, null, text, imageUrl, "ShareSDK", "http://www.sharesdk.cn"); 對於介面的詳細解釋,請參考QQ 登錄平台的add_share 介面。 印象筆記的分享內容需要攜帶筆記標題,因此調用下面的介面更為合適: ? 1 2 3 4 5 6 String title = 「測試分享的標題」 String text = 「測試分享的文本」; String image = 「/mnt/sdcard/測試分享的圖片.jpg」 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, Evernote.NAME); weibo.setWeiboActionListener(waListener); weibo.save(title, text, image); 對於印象筆記,分享的share 介面依然可用,但是更好的介面是save。 執行分享前ShareSDK 會自行判斷平台是否已經授權,若未授權,會自行執行授權操作。 信息和郵件分享功能使用send 介面,具體例子如下: ? 1 2 3 4 5 6 7 String address = 」10086」; String title = 「測試分享的標題」 String text = 「測試分享的文本」; String image = 「/mnt/sdcard/測試分享的圖片.jpg」 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, ShortMessage.NAME); weibo.setWeiboActionListener(waListener); ((ShortMessage) weibo).send(address, title, text); 簡訊的分享只支持SMS 分享,如果直接分享MMS,則分享結果無法獲取。至於郵件, 不管分享方式如何,都無法直接獲取分享結果。 執行分享前ShareSDK 會自行判斷平台是否已經授權,若未授權,會自行執行授權操作。 3-7 關注指定用戶 當前的ShareSDK 已經實現了新浪微博和騰訊微博的關注功能,下面的代碼演示騰訊微 博的關注操作: ? 1 2 3 4 String account = "shareSDK"; AbstractWeibo weibo = AbstractWeibo.getWeibo( context,TencentWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.followFriend(account); 執行關注前ShareSDK 會自行判斷平台是否已經授權,若未授權,會自行執 行授權操作。 3-8 獲取平台資料庫 ShareSDK 將每一個平台的授權數據都緩存在SharedPreferences 中,並且相互獨立。 如果你希望獲取任何一個平台的授權數據,可以像下面這樣子做: ? 1 2 3 4 AbstractWeibo weibo = AbstractWeibo.getWeibo(this, TencentWeibo.NAME); String accessToken = weibo.getDb().getToken(); String openId = weibo.getDb().get("openid"); // 接下來執行你要的操作 不同平台都會緩存access token 等信息,可以通過getToken()或者setToken()進行操 作。此外,開發者還可以通過直接get()某個欄位的辦法,獲取其數據,如上面通過「openid」 欄位獲取到騰訊微博的openId。 3-8 取消授權 下面的代碼演示新浪微博取消授權的操作: ? 1 2 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.removeAccount(); 此介面不需要WeiboActionListener,所以直接調用即可。
9. 在安卓分享中,如何通過ACTION_SEND進行指定應用分享,比如我想指定微博,qq,微信,朋友圈,最好有代碼
//指定分享的應用(type)
private void initShareIntent(String type) {
boolean found = false;
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("image/jpeg");
// gets the list of intents that can be loaded.
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0);
if (!resInfo.isEmpty()){
for (ResolveInfo info : resInfo) {
if (info.activityInfo.packageName.toLowerCase().contains(type) ||
info.activityInfo.name.toLowerCase().contains(type) ) {
share.putExtra(Intent.EXTRA_SUBJECT, "subject");
share.putExtra(Intent.EXTRA_TEXT, "your text");
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(myPath)) ); // Optional, just if you wanna share an image.
share.setPackage(info.activityInfo.packageName);
found = true;
break;
}
}
if (!found)
return;
startActivity(Intent.createChooser(share, "Select"));
}
}
//一些常用應用包名:
case ID_QQWEIBO:
initShareIntent("com.tencent.wblog");
break;
case ID_WEIXIN:
initShareIntent("com.tencent.mm");
break;
case ID_EVERNOTE:
initShareIntent("evernote");
break;
case ID_SINAWEIBO:
initShareIntent("com.sina.weibo");
break;
case ID_RENREN:
initShareIntent("renren");
break;
case ID_QQ:
initShareIntent("tencent.mobileqq");
break;
10. android 分享內容到新浪微博
不是,你可以去看看sina 的開放API,裡面寫的很詳細告訴你怎麼做。
原理就是你下一個sina的jar包放到你項目里,在配置申請的key,之後就根據文檔做些借口調用就好了。