使用 Fabric 在 Twitter 上撰写推文或分享图片

Tweet Compose OR Sharing Image On Twitter Using Fabric

我正在按照本教程在 Twitter 上分享推文 + 图片。 https://docs.fabric.io/android/twitter/compose-tweets.html

它可以完美地在 Twitter 上分享带有成功和失败响应的文本,但我无法分享图像,有人指导我我在这里犯了什么错误吗?

注意:当我从应用程序的可绘制文件夹共享图像时,它会上传,但我必须从 Internet 下载图像,然后将其保存在内部存储中。

我在下面的注释代码清楚地解释了图像在我测试时保存在内部存储器中。

public void composetweet()
{
    File myDir = getFilesDir();
    File savedImage = new File(myDir + "/text/","test.jpg");

   /* if(savedImage.exists()){

        Bitmap myBitmap = BitmapFactory.decodeFile(savedImage.getAbsolutePath());

        ImageView myTestImage = (ImageView) findViewById(R.id.myimageview);

        myTestImage.setImageBitmap(myBitmap);

    }*/

    Uri myImageUri = Uri.fromFile(savedImage);
    Intent intent = new TweetComposer.Builder(this)
            .text("just setting up my Fabric.")
            .image(myImageUri)
            .createIntent();
    startActivityForResult(intent, TWEET_COMPOSER_REQUEST_CODE);

}
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == TWEET_COMPOSER_REQUEST_CODE) {

            if(resultCode == Activity.RESULT_OK) {

               // onTwitterSuccess();

            } else if(resultCode == Activity.RESULT_CANCELED) {

               // onTwitterCancel();
            }
        }

    }

我也试过:

Uri myImageUri = Uri.fromFile(savedImage);
  TweetComposer.Builder builder = new TweetComposer.Builder(this)
                .text("just setting up my Fabric.")
                .image(myImageUri);
builder.show();

但运气不好。
有什么想法吗?

图片Uri应该是本地文件的文件Uri(即file://absolute_path方案)。例如:

File myImageFile = new File("/path/to/image");
Uri myImageUri = Uri.fromFile(myImageFile);

尝试使用绝对路径检索图像路径,还有另一个选项设置 Twittercard。

https://dev.twitter.com/cards/types/app

经过一些研究我发现:

  • 当您将数据从您的应用程序保存到内部存储器并尝试在同一个应用程序中获取时,它会起作用。

但是如果你想在另一个应用程序中共享从你的应用程序创建的文件,内部存储不会给你权限。

因此我遵循了这个解决方案来完成这项工作:

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.mobitsolutions.socialmediashare.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/pathfile"/>
        </provider>