如何使用Android Facebook SDK从内部存储共享照片到故事?

时间:2019-07-31 21:11:19

标签: android facebook facebook-android-sdk

如何使用

new SharePhoto.Builder()
    .setImageUrl(Uri uri)
    .build();

要将文件从内部存储共享到Facebook故事?该文档提到添加

<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
      android:name="com.facebook.FacebookContentProvider"
      android:exported="true"/>

AndroidManifest.xml,但这还不够。

有一种方法FacebookContentProvider.getAttachmentUrl()给出了一个我试图用来在其中保存文件的路径,但是它不起作用。

我从Facebook SDK回调管理器收到的错误如下。

  

无法复制贴纸

1 个答案:

答案 0 :(得分:0)

有一些可能的原因无法正确获取文件。

第一个是,Facebook SDK需要将文件存储在本地存储中,并带有有效的Uri。因此,如果文件实际上没有存储在本地存储中,则可能是一个问题。

另一件事是正确设置您的应用程序,以便它可以访问内部存储中的文件。我建议您检查一下您的应用程序中可能缺少的内容。

检查FileProvider中是否有AndroidManifest.xml,如下所示。

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}"
    android:exported="false"
    android:grantUriPermissions="true"
    tools:replace="android:authorities">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_provider_paths"
        tools:replace="android:resource" />
</provider>

并且您的file_provider_paths.xml文件夹中应该有一个/res/xml文件,其中应包含文件的位置,如下所示。

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
        name="documents"
        path="Android/data/bd.com.ipay.android/files/Pictures" />
</paths>

希望有帮助!