私はTwitter4jを使用して、アプリの作成方法を学習するためのTwitterアプリを作成しています。twitter4jサイトからサンプルコードをコピーして、ICS用の非常に基本的なアプリを作成しました。twitter4j apiは、OAuthプロセスのhttpリクエストを送信してから、承認プロセスが行われるWebページを開きます。問題は、アプリがコードのhttpリクエスト部分でスタックすることです。<uses-permission android:name="android.permission.INTERNET"/>
マニフェストファイルに権限を追加しました。コードスニペットは以下のとおりです。
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アプリケーションで使用して確認しました。
これが起こる理由はありますか?リクエストを返すには、他の許可も含める必要がありますか?