Авторизация Facebook не работает внутри Android Asynctask или Thread - PullRequest
4 голосов
/ 18 февраля 2012

Работа с фейсбуком в Android. Иногда мое приложение обналичивает устройства в реальном времени, когда я пытался авторизовать Facebook на Android.не в эмуляторе. Я использовал Android Facebook SDK. Поэтому я подумал, что многопоточность может остановить это. Сначала попытался выполнить асинхронную задачу

.
Activity act=this;

private class fbwork extends AsyncTask<Facebook, Integer, String>
{

    @Override
    protected String doInBackground(Facebook... para)
    {
        // TODO Auto-generated method stub
        Log.d(tagg, "Entered async");
            if(loginflag==0)
            {
                try
                {
                    para[0].authorize(act, PERMISSIONS, new LoginDialogListener());
                }catch(Exception ex)
                {
                    Log.d(tagg,ex.getMessage());
                }
                Log.d(tagg, tagg.toString());
            }
            else
            {

                try {
                    logout();
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }


        return "0";
    }

телефонный код:

new fbwork().execute(facebook);

выдает ошибку: не удается создать обработчик внутри потока, который не вызвал Looper.Prepare ()

Так попробовал нормальный способ нарезки резьбы.

public void loginprocesure() throws MalformedURLException, IOException
{
    final Activity ac=this;
    if(loginflag==0)
    {
        new Thread(new Runnable() {

            public void run() {
                // TODO Auto-generated method stub
                facebook.authorize(ac, PERMISSIONS, new LoginDialogListener());
            }
        }).start();

    }
    else
    {

        logout();
    }
}

Снова тот же результат. любой способ исправить это !!!! Как остановить этот сбой приложения в реальном устройстве. Пожалуйста, помогите.

Ответы [ 3 ]

2 голосов
/ 18 февраля 2012

Я столкнулся с той же проблемой. Вы должны попытаться поместить этот метод в цикл

 Looper.prepare();
 new fbwork().execute(facebook);
 Looper.loop();
0 голосов
/ 04 мая 2012

У меня тоже есть эта проблема. Я не мог заставить работать код AsyncTask.

Итак, я использовал runOnUiThread. Работает на эмуляторе, но не на устройстве, я использую HTC Desire Android SDK 2.2.2. К сожалению, я даже не могу войти в Facebook, используя Hackbook (пример проекта Facebook).

Вот код, который использует runOnUiThread: Приложение Android падает после обмена с помощью диалогов Facebook

0 голосов
/ 18 февраля 2012

Авторизация Facebook использует методы, которые обращаются к потоку событий, поэтому вам не нужно выполнять этот метод в другом потоке, кроме потока событий.

Если вы столкнулись с проблемой при выполнении этого метода в обычном потоке событий, укажите эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...