1
我使用Twitter4j來製作一個Twitter應用程序,用於學習如何製作應用程序。我通過複製sample code from the twitter4j site爲ICS製作了一個非常基本的應用程序。 twitter4j api發送OAuth進程的http請求,然後打開授權過程發生的網頁。問題是應用程序卡在代碼的http請求部分。我已在清單文件中添加了許可<uses-permission android:name="android.permission.INTERNET"/>
。代碼片段如下。使用Twitter4j的Http請求不起作用並卡住
Log.v("storeCredentials", "Started");
System.out.println("storeCredentials"+" Started");
Twitter t1 = TwitterFactory.getSingleton();
t1.setOAuthConsumer(twitter.getConsumerKey(), twitter.getConsumerSecret());
Log.v("storeCredentials", "consumer set");
System.out.println("storeCredentials"+" consumer set");
//ConnectionDetector detective = new ConnectionDetector(this);
System.out.println("storeCredentials"+" debug 5");
Log.v("storeCredentials", "connection present");
//Progress Dialog
System.out.println("storeCredentials"+" debug 6");
final ProgressDialog d1 = new ProgressDialog(this);
System.out.println("storeCredentials"+" debug 7");
d1.setProgressStyle(ProgressDialog.STYLE_SPINNER);
d1.setCancelable(false);
d1.show();
new Thread(new Runnable(){
public void run()
{
Twitter temp = TwitterFactory.getSingleton();
temp.setOAuthConsumer(twitter.getConsumerKey(), twitter.getConsumerSecret());
try
{
RequestToken tempToken = temp.getOAuthRequestToken();
AccessToken accessToken = null;
System.out.println("storeCredentials"+" debug 10");
Log.v("storeCredentials", "tokens init");
//BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//while (null == accessToken) return true;
String url = tempToken.getAuthorizationURL();
//String url = "http://www.google.co.in";
if (!url.startsWith("https://") && !url.startsWith("http://"))
{
url = "http://" + url;
}
Uri webpage = Uri.parse(url);
Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
Log.v("storeCredentials", "Intent created");
System.out.println("storeCredentials"+" Intent created");
// Verify it resolves
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(webIntent, 0);
boolean isIntentSafe = activities.size() > 0;
Log.v("Number of browsers", String.valueOf(activities.size()));
System.out.println("storeCredentials"+" Number of browsers" + " String.valueOf(activities.size())");
// Start an activity if it's safe
if (isIntentSafe)
{
startActivity(webIntent);
}
我敢肯定的應用卡在RequestToken tempToken = temp.getOAuthRequestToken();
線監守我沒有收到,要求我選擇瀏覽器的提示。 twitter4j網站的示例代碼正常工作。我通過在java應用程序中使用它進行驗證。
爲什麼會有這種情況發生?我還必須包含其他許可以及返回請求嗎?
如果您在IDE中執行此操作,請嘗試設置斷點並點擊它。 – karmanaut 2013-03-29 13:23:37