2016-12-03 26 views
0

您好evrybody我正在tryng,分享使者的形象,但我不知道为什么我的代码doesen't的工作,我已经按照官方指导,https://developers.facebook.com/docs/messenger/android 有人可以告诉我为什么doese'nt工作?的Android,如何共享图像文件与信使

public void sendMessage(){ 
    Bitmap adv= takePic(HomeActivity.livelloCurrent.getNumeroLivello()); 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    adv.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    File f = new File(Environment.getExternalStorageDirectory()+ File.separator + "temporary_file.jpg"); 
    try { 
     f.createNewFile(); 
     new FileOutputStream(f).write(bytes.toByteArray()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    String mimeType = "image/jpeg"; 
    Intent sendIntent = new Intent(); 
    sendIntent.setType(mimeType); 
    sendIntent.setAction(Intent.ACTION_SEND); 
    sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg")); 
    sendIntent.putExtra(Intent.EXTRA_TEXT, "<---MY TEXT--->."); 
    sendIntent.setPackage("com.facebook.orca"); 
    try { 
     startActivity(sendIntent); 
    } 
    catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(getApplicationContext(),"Please Install Facebook Messenger", Toast.LENGTH_LONG).show(); 
    } 
    /** //withSDK-->// ShareToMessengerParams shareToMessengerParams = ShareToMessengerParams.newBuilder(ContentUri, mimeType).build(); 
    MessengerUtils.shareToMessenger(this, REQUEST_CODE_SHARE_TO_MESSENGER, shareToMessengerParams);**/ 
} 

我确定文件创建工作导致我测试了它。在测试中,我从Messenger中得到以下错误“对不起,Messenger无法处理文件”。我如何解决?

+0

呼叫'平齐()','getFD()同步()','和关闭后()'上'FileOutputStream'。 '写()'。有一天,使用'FileProvider'而不是'Uri.fromFile()',因为'fromFile()'在你的'targetSdkVersion'设置为24或更高的时候不适用于Android 7.0+设备。请注意,并非所有应用都支持*'EXTRA_TEXT'和'EXTRA_STREAM'在同一个“ACTION_SEND”'Intent'上。并摆脱'setPackage()',所以你可以[分享用户想要的](https://commonsware.com/blog/2011/06/28/share-where-the-user-wants.html)。 – CommonsWare

+0

在write()之后,我在'FileOutputStream'上调用了'flush()','getFD()。sync()'和'close()',但仍然不起作用,我也删除了'EXTRA_TEXT' – Rachid

回答

0

替换:

Uri.parse(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg") 

与:

Uri.fromFile(f) 
+0

我在日志控制台上有这个致命异常 'android.os.FileUriExposedException:file:///storage/emulated/0/temporary_file.jpg通过ClipData.Item.getUri()暴露超出应用程序' – Rachid

+0

@Rachid:这就是我在第一条评论中提到的问题。您无法在Android 7.0+上使用'Uri.fromFile()',其targetSdkVersion为24或更高。一种选择是进入'build.gradle'文件并将'targetSdkVersion'降低到23.另一种方法是将所有这些修改为使用'FileProvider',这样你就可以使用它而不是试图传递你从'Uri.fromFile()'得到的'Uri'。 – CommonsWare

+0

三江源洙多有解决我的问题:) :)使用FileProvider – Rachid

相关问题