使用Fabric在Twitter上撰写或共享图像

时间:2016-12-15 19:15:17

标签: android twitter twitter-fabric

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

它完美地在Twitter上分享成功和失败回复的文字,但我无法分享图片,任何人都指导我在这里做错了什么?

注意:当我从上传的应用程序的drawable文件夹中共享图像时,我必须从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();

但没有运气。
有什么想法吗?

2 个答案:

答案 0 :(得分:0)

图像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

答案 1 :(得分:0)

经过一些研究后我发现:

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

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

因此我按照这个解决方案来完成这项工作:

<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>