2013-01-01 4 views
0

저는 Twitter4J를 사용하여 애플리케이션의 시작 활동이 아닌 활동으로부터 트위터를 승인하고 있습니다. 지금까지 'CallAuthorisationActivity'라는 호출 활동에서 사용할 수있는 유효한 Twitter4j 트위터 객체로 인 텐트를 반환하는 'AuthorisationActivity'라는 별개의 활동이 있습니다.
트위터의 콜백이 제대로 작동하고 AuthorisationActivity의 인증 된 트위터 객체로 끝나지만 이제는 catch22 상황에서 스스로를 찾습니다. 1 - AuthorisationActivity의 시작 모드를 'singleTask'로 설정하지 않으면 콜백 AuthorisationActivity의 onNewIntent() 메소드로 돌아가는 것이 아니라 onCreate() 메소드로 돌아가서 무한 루프에서 인증을 시도합니다. 2 - AuthorisationActivity의 시작 모드를 'singleTask'로 설정하면 onNewIntent()로 돌아가지만 별도의 작업이므로 호출하는 활동의 onActivityResult() 메소드로 돌아 가지 않습니다.안드로이드 트위터 인증 콜백

저는 안드로이드 개발의 초보자에 불과합니다. 인증이 제대로 작동하기 때문에이 문제는 activites 관리 방법과 관련이 있다고 생각합니다. 아래는 매니페스트에서 간단한 발췌 한 것입니다 : 코드에서

<activity 
    android:name=".MainActivity"> 
<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 

<activity 
    android:name=".CallAuthorisationActivity"> 
</activity> 

<activity 
    android:name=".AuthorisationActivity" 
    android:label="@string/title_activity_authorisation"> 
    <intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <category android:name="android.intent.category.BROWSABLE"/> 
    <data android:scheme="tweetree" android:host="callback" /> 
    </intent-filter> 
</activity> 

이 CallAuthorisationActivity는 AuthorisationActivity에에 startActivityForResult (...)과 의도를 보내고 표준으로하여 onActivityResult에 결과 (...)를 잡는다. 감사의 뜻을 전하면

답변

0

이 링크 http://gtware.blogspot.com.au/2012/07/tweeting-from-android-apps-using.html#comment-form 이 나왔습니다. 몇 가지 변경 사항을 적용하면 멋진 해결책을 얻을 수있었습니다.

내가 그 페이지에 댓글을 달았습니다 : WebView를 사용하면 브라우저가 응용 프로그램에 통합되어 있기 때문에 콜백을 처리하는 것이 훨씬 쉬워집니다. 따라서 의도 필터가 전혀 필요 없습니다. 내가 대신 AsyncTwitter의 트위터 객체를 사용하고 있습니다 -

1 :

난 그냥 몇 가지 관심을 가질 변경. 트위터 개체는 사용자 검색 API에서와 같이 트위터에서 GET 데이터를 쉽게 가져올 수 있으며 TwitterListener는 필요하지 않습니다.

2 - Twitter.getOAuthRequestToken() 및 twitter.getOAuthAccessToken()을 호출 할 때 AsyncTwitter 객체가 있어도 내 가상 장치가 충돌하므로이 객체를 자체 AsyncTask 스레드에 캡슐화했습니다.

희망이 도움이 될 수 있습니다 ...