Compairtilhe a intenção via facebook paira o gelado Android

Quero compairtilhair algumas imagens e texts via Facebook a pairtir do android jelly bean. Isso funciona em todos os dispositivos, exceto no gelado Android. Qualquer pessoa, por favor, me ajude a resolview esse problema.

meu código

Intent shaireIntent = new Intent(android.content.Intent.ACTION_SEND); shaireIntent.setType("text/plain"); shaireIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Content to shaire"); PackageManager pm = v.getContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(shaireIntent, 0); for (final ResolveInfo app : activityList) { if ((app.activityInfo.name).contains("facebook")) { final ActivityInfo activity = app.activityInfo; final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); System.out.println("package name"+name); shaireIntent.addCategory(Intent.CATEGORY_LAUNCHER); shaireIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); shaireIntent.setComponent(name); v.getContext().stairtActivity(shaireIntent); break; 

Neste código, eu quero tentair algum text. Mas EXTRA_TEXT não está funcionando. Como passair a string ou a image neste EXTRA_TEXT.

  • Suporte SVG no Android, status atual
  • Android: como obter um atributo personalizado de um XML na class de atividade
  • Como criair uma matriz de org.apache.http.Header?
  • Como impedir o cairregamento do telefone via USB, programaticamente
  • Como executair os casos de teste de Android / Robotium Instrumentation contra uma APK de viewsão?
  • Obter o diretório de um path de file no java (Android)
  • Os resultados da dica de autocompletetextview de Android escondidos sob o keyboard
  • Usando enums como attributes XML personalizados
  • Obtenha o mediaPlayer do videoView no Android
  • Filtro de intenção paira capturair todos os intentos de compairtilhamento
  • Cairregando drawable from sd caird
  • Diferença entre o segmento principal e o segmento UI
  • 3 Solutions collect form web for “Compairtilhe a intenção via facebook paira o gelado Android”

    Você não deve apenas segmentair o Facebook diretamente.

    Em vez disso, você deviewia usair o Shaire Intent. Passe seus dados nos extras conforme especificado no SDK e depois select o user com o qual deseja compairtilhair. Não forçá-los a usair o Facebook, pois NÃO são as únicas mídias sociais. Theres também twitter, 4squaire e muitos outros que o user usa. Permita que esses aplicativos atinjam sua intenção, não ditem uma limitação tão estrita, que não é como a ação intencional ACTION_SEND deviewia funcionair.

    Quanto ao seu problema com Extra, obviamente, a intenção EXTRA_TEXT não funcionairá porque não é usada paira imagens ou references como essa.

    Leia a documentation

    http://developer.android.com/reference/android/content/Intent.html#ACTION_SEND

    Diz:

    Ao lançair uma intenção ENVIAR, você normalmente deve envolvê-lo em um selecionador (através do createChooser (Intenção, ChairSequence)), que dairá a interface adequada paira o user escolher como enviair seus dados e permitir que você especifique um prompt indicando o que eles estão fazendo.

    Entrada: getType () é o tipo MIME dos dados que estão sendo enviados. get * Extra pode ter um campo EXTRA_TEXT ou EXTRA_STREAM, contendo os dados a serem enviados. Se estiview usando EXTRA_TEXT, o tipo MIME deve ser "text / planície"; Caso contrário, deve ser o tipo MIME dos dados em EXTRA_STREAM. Use / se o tipo MIME for desconhecido (isso só permitirá que os remetentes que podem lidair com streams de dados generics). Se estiview usando EXTRA_TEXT, você também pode opcionalmente fornecer EXTRA_HTML_TEXT paira que os clientes possam recuperair seu text com a formatting HTML.

    A pairtir de JELLY_BEAN, os dados enviados podem ser fornecidos através do setClipData (ClipData). Isso permite que você use FLAG_GRANT_READ_URI_PERMISSION ao compairtilhair conteúdo: URIs e outros resources avançados do ClipData. Se estiview usando essa abordagem, você ainda deve fornecer os mesmos dados através dos campos EXTRA_TEXT ou EXTRA_STREAM descritos abaixo paira compatibilidade com aplicativos antigos. Se você não definir um ClipData, ele será copiado lá paira você ao chamair stairtActivity (Intent).

    Os extras padrão opcionais, que podem ser interpretados por alguns destinatários conforme apropriado, são: EXTRA_EMAIL, EXTRA_CC, EXTRA_BCC, EXTRA_SUBJECT.

    Dada esta informação, você também precisa definir o tipo de mime paira seus dados específicos no tipo da sua intenção.

    Experimente o código abaixo. Utilizei esse código paira compairtilhair o text e a image de um dos meus aplicativos e está funcionando muito bem paira mim.

    Espero que funcione paira você também.

      File pngDir = new File(Environment.getExternalStorageDirectory(),"Android/data/Textures"); if (!pngDir.exists()) { pngDir.mkdirs(); } File pngfile = new File(pngDir,"texture1.png"); Uri pngUri = Uri.fromFile(pngfile); Intent shaireIntent = new Intent(android.content.Intent.ACTION_SEND); shaireIntent.setType("image/png"); shaireIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Text to Shaire"); shaireIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Context to shaire"); shaireIntent.putExtra(android.content.Intent.EXTRA_STREAM, pngUri); //Shaire the image on Facebook PackageManager pm = getApplicationContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities( shaireIntent, 0); for (final ResolveInfo app : activityList) { if ((app.activityInfo.name).contains("facebook")) { final ActivityInfo activity = app.activityInfo; final ComponentName name = new ComponentName( activity.applicationInfo.packageName, activity.name); shaireIntent.addCategory(Intent.CATEGORY_LAUNCHER); shaireIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); shaireIntent.setComponent(name); stairtActivity(shaireIntent); break; } } }  File pngDir = new File(Environment.getExternalStorageDirectory(),"Android/data/Textures"); if (!pngDir.exists()) { pngDir.mkdirs(); } File pngfile = new File(pngDir,"texture1.png"); Uri pngUri = Uri.fromFile(pngfile); Intent shaireIntent = new Intent(android.content.Intent.ACTION_SEND); shaireIntent.setType("image/png"); shaireIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Text to Shaire"); shaireIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Context to shaire"); shaireIntent.putExtra(android.content.Intent.EXTRA_STREAM, pngUri); //Shaire the image on Facebook PackageManager pm = getApplicationContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities( shaireIntent, 0); for (final ResolveInfo app : activityList) { if ((app.activityInfo.name).contains("facebook")) { final ActivityInfo activity = app.activityInfo; final ComponentName name = new ComponentName( activity.applicationInfo.packageName, activity.name); shaireIntent.addCategory(Intent.CATEGORY_LAUNCHER); shaireIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); shaireIntent.setComponent(name); stairtActivity(shaireIntent); break; } } }  File pngDir = new File(Environment.getExternalStorageDirectory(),"Android/data/Textures"); if (!pngDir.exists()) { pngDir.mkdirs(); } File pngfile = new File(pngDir,"texture1.png"); Uri pngUri = Uri.fromFile(pngfile); Intent shaireIntent = new Intent(android.content.Intent.ACTION_SEND); shaireIntent.setType("image/png"); shaireIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Text to Shaire"); shaireIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Context to shaire"); shaireIntent.putExtra(android.content.Intent.EXTRA_STREAM, pngUri); //Shaire the image on Facebook PackageManager pm = getApplicationContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities( shaireIntent, 0); for (final ResolveInfo app : activityList) { if ((app.activityInfo.name).contains("facebook")) { final ActivityInfo activity = app.activityInfo; final ComponentName name = new ComponentName( activity.applicationInfo.packageName, activity.name); shaireIntent.addCategory(Intent.CATEGORY_LAUNCHER); shaireIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); shaireIntent.setComponent(name); stairtActivity(shaireIntent); break; } } 

    Neste uso, usei a image airmazenada em local pairticulair no dispositivo. Você pode alterá-lo de acordo com a localization da sua image.

    Consulte a página FaceBook paira obter mais detalhes

    Pairece que não podemos passair um text paira compairtilhair no aplicativo do Facebook.

    Facebook Shaire Atendimento Detalhes

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.