2014-02-11 1 views
5

Может кто-нибудь сказать мне, где я должен установить try/catch, чтобы поймать это?Как поймать Не удалось найти информацию о провайдере для com.facebook.katana.provider.PlatformProvider error

02-10 22:54:35.701: E/ActivityThread(787): Failed to find provider info for com.facebook.katana.provider.PlatformProvider 

Я уже знаю, что это вызвано тем, что я не установил приложение facebook в мобильном телефоне.

Я хочу сделать тост, если исключение выбрано Это не работает.

shareButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 

      // TODO Auto-generated method stub 
      try{ 
      FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(Archivo.this) 
      .setLink(pagina) 
      .setName(nombre) 
      .setPicture(photo) 
      .setDescription(brief) 
      .build(); 
      uiHelper.trackPendingDialogCall(shareDialog.present()); 
      } 
      catch(FacebookDialogException ex){ 
       int duration = Toast.LENGTH_SHORT; 
      CharSequence FacebookDialogError="Instale y actualize su version de Facebook"; 
      Toast toast = Toast.makeText(activity,FacebookDialogError , duration); 
      toast.show(); 

      } 
     } 
    }); 

Я установил те же тосты, где facebookdialog получает исключение, и он все еще не работает.

public FacebookDialog build() { 
     validate(); 

     Bundle extras = new Bundle(); 
     putExtra(extras, NativeProtocol.EXTRA_APPLICATION_ID, applicationId); 
     putExtra(extras, NativeProtocol.EXTRA_APPLICATION_NAME, applicationName); 

     Intent intent = handleBuild(extras); 
     if (intent == null) { 
      int duration = Toast.LENGTH_SHORT; 
      CharSequence FacebookDialogError="Instale y aCtualize su version de Facebook"; 
      Toast toast = Toast.makeText(activity,FacebookDialogError , duration); 
      toast.show(); 
      throw new FacebookException("Unable to create Intent; this likely means the Facebook app is not installed."); 
     } 
     appCall.setRequestIntent(intent); 

     return new FacebookDialog(activity, fragment, appCall, getOnPresentCallback()); 
    } 

Что мне делать, чтобы сделать тост этого исключения?

+0

Они, вероятно, не выбрасывали исключение, так как FB SDK работает без приложения. Для чего вы используете эту информацию? – Navin

+1

Чтобы у пользователя было установлено приложение facebook, но вместо этого я использовал резервный sharedialog для Интернета, если приложение facebook не установлено. Теперь приложение i'm разрабатывается в обоих случаях. Я отправлю решение позже ... – UrielUVD

ответ

0

Извините, если слишком поздно, чтобы ответить на мой собственный вопрос, но я собираюсь обновить приложение там, где этот вопрос вышел. Поскольку вопрос по-прежнему просматривается, я отправлю сообщение об устранении неполадок

Это резервный случай, если приложение Facebook не найдено.

private void publishFeedDialog(String Link,String Name,String Photo,String Descripcion) { 

    Bundle params = new Bundle(); 
    params.putString("name", Name); 
    params.putString("caption",Caption); 
    params.putString("description",Descripcion); 
    params.putString("link", Link); 
    params.putString("picture",Photo); 

    WebDialog feedDialog = (
      new WebDialog.FeedDialogBuilder(sEstablecimiento.this, 
        Session.getActiveSession(), 
        params)) 
      .setOnCompleteListener(new OnCompleteListener() { 

       @Override 
       public void onComplete(Bundle values, 
             FacebookException error) { 
        if (error == null) { 
         final String postId = values.getString("post_id"); 
         if (postId != null) { 
          Toast.makeText(sEstablecimiento.this, 
            "Posted story, id: "+postId, 
            Toast.LENGTH_SHORT).show(); 
         } else { 
          // User clicked the Cancel button 
          Toast.makeText(sEstablecimiento.this.getApplicationContext(), 
            "Publish cancelled", 
            Toast.LENGTH_SHORT).show(); 
         } 
        } else if (error instanceof FacebookOperationCanceledException) { 
         // User clicked the "x" button 
         Toast.makeText(sEstablecimiento.this.getApplicationContext(), 
           "Publish cancelled", 
           Toast.LENGTH_SHORT).show(); 
        } else { 
         // Generic, ex: network error 
         Toast.makeText(sEstablecimiento.this.getApplicationContext(), 
           "Error posting story", 
           Toast.LENGTH_SHORT).show(); 
        } 
       } 

      }) 
      .build(); 
    feedDialog.show(); 
} 

и использовать логическое значение для проверки, если ShareDialog может быть Buil

if (FacebookDialog.canPresentShareDialog(getApplicationContext(), 
           FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) { 

          FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(myActivity.this) 
            .setLink("page") 
            .setName("name") 
            .setPicture("photo") 
            .setDescription("description") 
            .build(); 
          uiHelper.trackPendingDialogCall(shareDialog.present()); 

         } else { 
          publishFeedDialog("page","name","photo","description"); 
         } 

Я надеюсь, что это может быть полезным для кого-то. Спасибо за вашу терпение, простите мое отсутствие заботы о вопросе.