2016-12-15 1 views
0

Я следую этому руководству, чтобы поделиться твитом + изображение в твиттере. Tweet Создать или обмен изображениями на Twitter Использование Fabric

Его работа идеально подходит для обмена текстом на твиттере с успехом и отказом ответа, но я не могу поделиться имиджем, кто-нибудь подскажет мне, какую ошибку я здесь делаю?

Примечание: когда я обмениваюсь изображением из выпадающей папки приложения, он загружается, но мне нужно загрузить изображение из Интернета, а затем сохранить его на внутренней памяти.

В моем пояснительном коде объясняется, что изображение сохраняется на внутренней памяти при проверке.

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(); 

Но не повезло.
Любые идеи?

ответ

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

Изображение Uri должно быть файлом Uri (например, file://absolute_path) в локальный файл. Например:

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

Попробуйте восстановить путь изображения с помощью absolutepath, и еще один параметр настройки Twittercard.

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

Смежные вопросы