質問: アンドロイド開発初心者です。 OAuth認証についての質問があります。 現在、「画面上の「認証」ボタンを押すと、twitterの認証画面に移動する」というところまでの開発を行っています(練習アプリです)。 自分なりにコーディングしてみたのですが、「認証」を押すとエラーが出てアプリが落ちてしまいます。デバックもしてみたのですが原因がわかりません。 どなたか原因がわかる方がいらっしゃいましたら教えていただけないでしょうか。 以下諸情報 使っているライブラリ: commons-codec-1.5.jar signpost-core-1.2.1.1.jar signpost-commonshttp4-1.2.1.1.jar ソースコード: 以下のページに記載してあります。 デバッグ時のLogcatのエラータブ: ![](https://i.stack.imgur.com/C9a3d.png) <注> twitter.java:57は Main Activity の startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); になります。 エラー詳細: 同アプリの「認証」ボタンを押すとほどなくして「問題が発生したため、同アプリを終了します」というコメントが出てきてアプリが落ちてしまいます デバッグ詳細: 。 「デバッグ」に関しては、AndroidStudioに標準で付いているdebugツールを試してみて、LogCatでエラーが出た箇所を見直すという方法で行いました。BreakPointなどは特に使用しておりません。 どうぞよろしくお願いします
回答: > > Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat= } > > > 指定されたIntentに対応するActivityが見つからない、というエラーですが、datの値が空になっているように見えます。対応するソースコードを読むと・・・ ``` public void onClickBtnLogin(View v){ String authUrl=""; try{ authUrl = oauthProvider.retrieveRequestToken(oauthConsumer,AppConstants.CALLBACK_URL); } catch (OAuthMessageSignerException e) { Log.e(getClass().getSimpleName(), "Twitter OAuth Error", e); } catch (OAuthNotAuthorizedException e) { Log.e(getClass().getSimpleName(), "Twitter OAuth Error", e); } catch (OAuthExpectationFailedException e) { Log.e(getClass().getSimpleName(), "Twitter OAuth Error", e); } catch (OAuthCommunicationException e) { Log.e(getClass().getSimpleName(), "Twitter OAuth Error", e); } startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); } ``` これ、`oauthProvider.retrieveRequestToken()` に失敗しても `startActivity(new Intent(...))` が実行されますよね。この場合 `authUrl` は空文字列ですから、冒頭のエラーになることが考えられます。 authUrlが取得できなかった場合はstartActivityしないようにする必要があるのではないでしょうか。 いずれにせよ authUrlが正しいURLになっているかどうか確認してみてください。