Вопрос

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

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();
    }
}

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

Это было полезно?

Решение

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

 Looper.prepare();
 new fbwork().execute(facebook);
 Looper.loop();

Другие советы

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

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

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

Так что я закончил тем, что использовал Runonuithread. Он работает на эмуляторе, но не на устройстве, я использую HTC Desire Android SDK 2.2.2. К сожалению, я даже не могу войти в Facebook, используя HackBook (образец проекта Facebook).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top