Обратный вызов Signpost работает в эмуляторе Android с API 10, но не с API 15 или 16

Я считаю, что я правильно запрограммировал и настроил вызов Signpost в Twitter. Все это прекрасно работает при работе на API 10 (через эмулятор и реальный телефон). Но когда я пробую точно такой же apk на API 15 или 16, обратный вызов не работает вообще. Вместо того, чтобы возвращать меня в мое приложение, оно отправляет меня на другую веб-страницу, которая сообщает, что страница недоступна, и идентифицирует мой URL обратного вызова + маркер oauth. я имею

  • set android:launchMode="singleInstance" для действия
  • установить андроид: схему и андроид: хост, чтобы соответствовать URL-адресу обратного вызова, переданному в retrieveRequestToken
  • переопределено onNewIntent

    <activity
        android:name=".TimelineActivity"
        android:label="@string/app_name"
        android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    
        <!-- Used for OAuth callback -->
        <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="x-AbcdEfg41-oauth-twitter"
                android:host="callback" />
        </intent-filter>
    </activity>
    

onNewIntent выглядит так:

    super.onNewIntent(intent);
    Log.d(TAG, "intent:  " + intent);

    //check if this is a callback from OAuth
    Uri uri = intent.getData();
    if (uri != null && uri.getScheme().equals(OAUTH_CALLBACK_SCHEME)) {
        Log.d(TAG, "callback:  " + uri.getPath());
        String verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER);
        Log.d(TAG, "verifier:  " + verifier);

        new RetrieveAccessTokenTask().execute(verifier);
    }

И мой аутентификационный вызов выглядит так:

try {
      authUrl = this.mProvider.retrieveRequestToken(this.mConsumer, OAUTH_CALLBACK_URL);
      Log.d(TAG, authUrl);
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);
    }

И мой logcat выглядит нормально, хотя я немного подозрительно отношусь к "эмулятору без эмуляции GPU" просто потому, что я не вижу этого при запуске на API 10:

12-07 04:48:31.428: I/TimelineApplication(754): onCreate
12-07 04:48:31.598: I/TimelineActivity(754): onCreate(). Starting authorizaion.
12-07 04:48:31.658: I/dalvikvm(754): threadid=3: reacting to signal 3
12-07 04:48:31.678: I/dalvikvm(754): Wrote stack traces to '/data/anr/traces.txt'
12-07 04:48:31.758: D/TimelineActivity(754): OAuthAuthorizeTask.doInBackground()
12-07 04:48:31.857: D/gralloc_goldfish(754): Emulator without GPU emulation detected.
12-07 04:48:32.968: D/dalvikvm(754): GC_CONCURRENT freed 206K, 3% free 12797K/13063K, paused 7ms+6ms
12-07 04:48:33.907: D/TimelineApplication(754): https://api.twitter.com/oauth/authorize?oauth_token=QepbZdXy2uiDFt7vrwvwq72Wl1S2IzsZywCPHwx8jTk
12-07 04:48:33.968: D/TimelineApplication(754): oAuthAuthorize() has finished
12-07 04:48:34.139: D/TimelineActivity(754): OAuthAuthorizeTask.onPostExecute()
12-07 04:48:34.368: D/TimelineActivity(754): the result is NULL

0 ответов

Другие вопросы по тегам