當前位置:首頁 » 安卓系統 » 新浪微博android源碼

新浪微博android源碼

發布時間: 2022-09-05 02:00:40

① android開發新浪微博客戶端問題

你首先要到新浪開源平台上申請個 app key 加入到你的應用中,如何加入適合使用api 新浪開源平台都給出了詳細的文檔了

② 新浪微博android客戶端問題!!!!求大神解決。。。

OAuth.java這個文件能看源碼?
估計調用的 是decode(String s),而不是decode(String s,String enc),
前一種方法JAVA API種明確了 不贊成 使用,它會去調第二個 ,帶一個dfltEncName 值,這個值為空就 會 拋空異常 ;
事實上 ,用第二個 方法要 指定 編碼方式,如UTF-8等;
它們的 定義:
/**
* Translates a string into <code>x-www-form-urlencoded</code>
* format. This method uses the platform's default encoding
* as the encoding scheme to obtain the bytes for unsafe characters.
*
* @param s <code>String</code> to be translated.
* @deprecated The resulting string may vary depending on the platform's
* default encoding. Instead, use the encode(String,String)
* method to specify the encoding.
* @return the translated <code>String</code>.
*/
@Deprecated
public static String encode(String s) {

String str = null;

try {
str = encode(s, dfltEncName);
} catch (UnsupportedEncodingException e) {
// The system should always have the platform default
}

return str;
}

/**
* Translates a string into <code>application/x-www-form-urlencoded</code>
* format using a specific encoding scheme. This method uses the
* supplied encoding scheme to obtain the bytes for unsafe
* characters.
* <p>
* <em><strong>Note:</strong> The <a href=
* "http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars">
* World Wide Web Consortium Recommendation</a> states that
* UTF-8 should be used. Not doing so may introce
* incompatibilites.</em>
*
* @param s <code>String</code> to be translated.
* @param enc The name of a supported
* <a href="../lang/package-summary.html#charenc">character
* encoding</a>.
* @return the translated <code>String</code>.
* @exception UnsupportedEncodingException
* If the named encoding is not supported
* @see URLDecoder#decode(java.lang.String, java.lang.String)
* @since 1.4
*/
public static String encode(String s, String enc)
throws UnsupportedEncodingException {

boolean needToChange = false;
StringBuffer out = new StringBuffer(s.length());
Charset charset;
CharArrayWriter charArrayWriter = new CharArrayWriter();

if (enc == null)
throw new NullPointerException("charsetName");

try {
charset = Charset.forName(enc);
} catch (IllegalCharsetNameException e) {
throw new UnsupportedEncodingException(enc);
} catch (UnsupportedCharsetException e) {
throw new UnsupportedEncodingException(enc);
}

for (int i = 0; i < s.length();) {
int c = (int) s.charAt(i);
//System.out.println("Examining character: " + c);
if (dontNeedEncoding.get(c)) {
if (c == ' ') {
c = '+';
needToChange = true;
}
//System.out.println("Storing: " + c);
out.append((char)c);
i++;
} else {
// convert to external encoding before hex conversion
do {
charArrayWriter.write(c);
/*
* If this character represents the start of a Unicode
* surrogate pair, then pass in two characters. It's not
* clear what should be done if a bytes reserved in the
* surrogate pairs range occurs outside of a legal
* surrogate pair. For now, just treat it as if it were
* any other character.
*/
if (c >= 0xD800 && c <= 0xDBFF) {
/*
System.out.println(Integer.toHexString(c)
+ " is high surrogate");
*/
if ( (i+1) < s.length()) {
int d = (int) s.charAt(i+1);
/*
System.out.println("\tExamining "
+ Integer.toHexString(d));
*/
if (d >= 0xDC00 && d <= 0xDFFF) {
/*
System.out.println("\t"
+ Integer.toHexString(d)
+ " is low surrogate");
*/
charArrayWriter.write(d);
i++;
}
}
}
i++;
} while (i < s.length() && !dontNeedEncoding.get((c = (int) s.charAt(i))));

charArrayWriter.flush();
String str = new String(charArrayWriter.toCharArray());
byte[] ba = str.getBytes(charset);
for (int j = 0; j < ba.length; j++) {
out.append('%');
char ch = Character.forDigit((ba[j] >> 4) & 0xF, 16);
// converting to use uppercase letter as part of
// the hex value if ch is a letter.
if (Character.isLetter(ch)) {
ch -= caseDiff;
}
out.append(ch);
ch = Character.forDigit(ba[j] & 0xF, 16);
if (Character.isLetter(ch)) {
ch -= caseDiff;
}
out.append(ch);
}
charArrayWriter.reset();
needToChange = true;
}
}

return (needToChange? out.toString() : s);
}

③ 新浪微博android客戶端源代碼

親,你那個源碼找到了嗎?我在客戶端怎麼都是完成不了授權,好煩啊......要是你有能授權成功的源碼能分享一下嗎?

④ android新浪微博app裡面微博正文界面是怎麼 實現的呢

裡面的(評論,轉發,點贊都可以相互切換),裡面還是轉發的欄要懸浮(具體實現效果請參看sina weibo的微博正文界面),我自己嘗試用一個ListView,但是貌似做出來的有問題

⑤ 最新的新浪微博客戶端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了。

⑥ android做登錄界面基於新浪微博的,不是認證是做一個用戶 登陸界面 用新浪賬號的,怎麼做

我之前做過。有源碼。。。查了新浪微博 提供的API。必須進行oAuth認證,授權界面其實就是用戶登錄界面。輸賬號密碼授權。。

⑦ 怎麼基於新浪微博開放平台提供的android SDK開發新浪微博手機客戶端。已下載了SDK和一個jar包,怎麼用呢

sina sdk是基於java語言的,封裝了一些函數,如認證等,你正常的android開發時,import相關的文件即可,UI層你自己寫,調用api時,調用sdk里的就行了

⑧ 求一個android新浪微博客戶端源代碼

已發送,望採納

⑨ 大家知道安卓或者ios端的新浪微博是基於什麼語言開發的嗎是native app,基於Andriod或ios,

語言是language,應用程序是application。既然你知道用語言來開發怎麼回答的卻是應用程序呢。
安卓是用JAVA語言寫的,為什麼不說是java開發的呢,原因就是JAVA程序直接可以CLASS文件運行。而安卓還要對class文件進行優化,生成新的文件格式。z至於蘋果手機,沒開發過,不太清楚。

⑩ android新浪微博開發API介面

1、發到你郵箱了,請查收。
2、新浪微博android開發(一)(二)(三)(四)系列文章。
3、PPT,請到網路中搜「新浪微博android開發PPT」,網路文庫下載。

熱點內容
手機設備存儲是什麼 發布:2025-01-12 01:03:45 瀏覽:904
linux校園網 發布:2025-01-12 00:58:54 瀏覽:406
時序插值演算法 發布:2025-01-12 00:58:25 瀏覽:811
編程的射燈 發布:2025-01-12 00:58:24 瀏覽:404
怎樣禁止空間訪問 發布:2025-01-12 00:32:44 瀏覽:836
rms加密 發布:2025-01-12 00:32:07 瀏覽:532
python寫搶票程序 發布:2025-01-12 00:25:07 瀏覽:981
360瀏覽器打開ftp 發布:2025-01-12 00:24:15 瀏覽:787
蘋果和安卓哪個適合拍攝短視頻 發布:2025-01-12 00:20:48 瀏覽:687
手機查詢文件夾 發布:2025-01-12 00:16:51 瀏覽:131