1.Intent intent = new Intent(Intent.ACTION_SEND); //啟動(dòng)分享發(fā)送的屬性
成都創(chuàng)新互聯(lián)公司主營(yíng)寧都網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開發(fā),寧都h5成都微信小程序搭建,寧都網(wǎng)站營(yíng)銷推廣歡迎寧都等地區(qū)企業(yè)咨詢
2. intent.setType("text/plain"); //分享發(fā)送的數(shù)據(jù)類型
3. intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); //分享的主題
4. intent.putExtra(Intent.EXTRA_TEXT, "extratext"); //分享的內(nèi)容
5. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//這個(gè)也許是分享列表的背景吧
6. FenxiangActivity.this.startActivity(Intent.createChooser(intent, "分享"));//目標(biāo)應(yīng)用選擇對(duì)話框的標(biāo)題
然后在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
我雖然對(duì)新浪SDK不熟,但仍然覺(jué)得應(yīng)該確認(rèn)兩個(gè)地方:
1、requestToken確保不為空
2、uri.getQueryParameter("oauth_verifier")確保不為空。
這樣你就能夠定位到是哪個(gè)地方出空指針了!
手機(jī)要先下載有新浪微博或者騰訊微博的客戶端,隨意下載一款知名度大點(diǎn)的天氣軟件,進(jìn)入選擇分享就好了,天氣通就可以像你說(shuō)的直接分享到新浪微博。
Android進(jìn)階之使用第三方平臺(tái)ShareSDK實(shí)現(xiàn)新浪微博的一鍵分享功能。
ShareSDK是一種社會(huì)化分享組件,為iOS、Android、WP8
的APP提供社會(huì)化功能,集成了一些常用的類庫(kù)和接口,縮短開發(fā)者的開發(fā)時(shí)間,還有社會(huì)化統(tǒng)計(jì)分析管理后臺(tái)。ShareSDK移動(dòng)開發(fā)者服務(wù)平臺(tái)由廣州掌淘網(wǎng)絡(luò)科技有限公司開發(fā)。
本文介紹了如何在Android程序中使用新浪微博提供的AndroidSDK
微博Android平臺(tái)SDK為第三方微博應(yīng)用提供了文檔易用的微博API調(diào)用服務(wù),使第三方客戶端無(wú)需了解復(fù)雜的驗(yàn)證,API調(diào)用過(guò)程。并可以實(shí)現(xiàn)分享到微博的功能,可以分享文字,或者多媒體信息到內(nèi)置的分享頁(yè)面,并發(fā)送到微博。
首先我們需要在新浪微博開放平臺(tái)上進(jìn)行注冊(cè),之后需要?jiǎng)?chuàng)建一個(gè)新的應(yīng)用,并且需要記下應(yīng)用的APP key,App Secret Key以及設(shè)置應(yīng)用的回調(diào)頁(yè)以便我們?cè)诔绦蛑羞M(jìn)行使用。此外,還需要在應(yīng)用的高級(jí)信息里添加測(cè)試用戶的uid,切記切記,否則會(huì)出現(xiàn)登陸不成功等怪現(xiàn)象。
接著我們下載微博提供的Android上的SDK,下載地址在這里http。//open。weibo。com/wiki/SDK,選擇AndroidSDK進(jìn)行下載即可。
使用方法:
首先將下載的sdk進(jìn)行解壓,并將其導(dǎo)入到eclipse中,接著在你需要使用sdk的android工程中點(diǎn)擊右鍵,屬性,設(shè)置library屬性,選中剛才導(dǎo)入的weibosdk即可。如圖所示
然后在你的工程的Manifest文件中,加入以下權(quán)限:
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呢,下面就由我來(lái)為大家介紹使用方法:
首先在你需要使用微博的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即是文章開頭介紹的在微博上創(chuàng)建的應(yīng)用里的兩個(gè)key,setRedirectUrl中的內(nèi)容即是在應(yīng)用中設(shè)置的回調(diào)頁(yè)。
Listener則是在進(jìn)行登陸授權(quán)后對(duì)執(zhí)行結(jié)果進(jìn)行處理的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是在微博登陸授權(quán)成功后會(huì)執(zhí)行的方法,在這個(gè)方法中,你可以調(diào)用你想要的功能如發(fā)表微博,轉(zhuǎn)發(fā),評(píng)論等。使用的代碼可參看以下代碼:
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是調(diào)用weibo api中需要的具體參數(shù),可根據(jù)需要進(jìn)行添加
AsyncWeiboRunner 是用來(lái)執(zhí)行具體請(qǐng)求的類,根據(jù)你設(shè)定的參數(shù)發(fā)起請(qǐng)求。注意這里又有一個(gè)listerner,而這個(gè)listener是對(duì)發(fā)起請(qǐng)求后的結(jié)果進(jìn)行處理的回調(diào)類,
RequestListener listener= new RequestListener()
需要復(fù)寫的方法有OnIOException,onError,onComplete,這樣可以清楚地對(duì)各種情況進(jìn)行處理。
這樣在程序中就可以使用新浪微博 android sdk了。