Сбой обмена Facebook из моего приложения на Motorola Droid?

#android

#Android

Вопрос:

Я разработал приложение, которое позволяет размещать данные на стене Facebook, используя facebook sdk.Я тестировал на нескольких других телефонах, таких как LG optimus, но когда приложение запускается на Motorola droid, оно время от времени вылетает.

Когда я нажимаю на кнопку «Поделиться facebook» в своем контекстном меню, приложение выходит из строя.

Я погуглил и узнал вот что

http://groups.google.com/group/android-developers/browse_thread/thread/92d6f063682d2ca4/735acce1300115d7?show_docid=735acce1300115d7amp;pli=1.

Существует проблема с телефонами Droid при использовании web kit.

О той же проблеме сообщалось в facebook sdk https://github.com/facebook/facebook-android-sdk/issues/82?authenticity_token=a321076df454835ad9c481d6fa73a3ea8cad1ceb

Опять же, в основном говорится, что исключение произошло во время использования Motorola droid.

Вот трассировка стека:

 java.lang.NullPointerException
    at android.webkit.WebView.onWindowFocusChanged(WebView.java:4177)
    at android.view.View.dispatchWindowFocusChanged(View.java:3788)
    at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:658)
    at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:662)
    at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:662)
    at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:662)
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1921)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4627)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    at dalvik.system.NativeStart.main(Native Method)
  

У кого-нибудь есть решение или обходной путь для этого?

Редактировать: Похоже, это происходит и на HTC Incredible.

Комментарии:

1. Кто-нибудь нашел какое-либо решение или обходной путь для этой проблемы?

Ответ №1:

Для этого есть обходной путь, в котором явно упоминается Motorola Droid, вы можете найти оригинальную публикацию по адресу:

Обходной путь для исключения нулевого указателя в WebView.onWindowFocusChanged

Создайте пользовательский веб-класс:

CustomWebView.java

 public class CustomWebView extends WebView {

    public CustomWebView(Context context) {
        super(context);
    }

    public CustomWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CustomWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        try{
            super.onWindowFocusChanged(hasWindowFocus);
        }catch(NullPointerException e){
        // Catch null pointer exception
        }
    }
}
  

Теперь откройте FbDialog.java, предоставляемая facebook, и измените строку, которая создает webview, чтобы использовать подкласс CustomWebView следующим образом

WebView view = new CustomWebView(getContext());

Комментарии:

1. Большое спасибо. Собираюсь протестировать это и дам вам знать

2. Привет @ Merlin, я тоже сталкиваюсь с той же проблемой, но где мне нужно разместить «WebView view = new CustomWebView (getContext());» этот код. Я использую «facebookConnector. login();», автоматически открывается встроенный экран facebook logiin.

3. Тема Odl, но поскольку вопрос Venkat также беспокоил нас, и в Интернете ничего нет. Измените файл FbDialog. java предоставляется facebook (пакет: com.facebook.android). Нажмите CTRL F для «new WebView», и вы найдете строку, в которой вы должны вызвать CustomWebView.

4. @yoshi Я обновил этот ответ, я, вероятно, был в стрессовом состоянии, когда изначально отвечал на этот вопрос, поэтому я не стал следить за ним. Я надеюсь, что это исправит ситуацию.

5.О чем ты говоришь? Я просто вижу хороший ответ. 🙂 большие пальцы вверх imgs.xkcd.com/comics/wisdom_of_the_ancients.png