Делитесь фотографиями с другими приложениями

Я ломал голову над этим. Я имел его. Приложение отправляло картинку в любое другое приложение. Я пробовал с WhatsApp, Gmail и т. Д. Но теперь это не работает. Что это может быть? Проблема с упаковкой? Проблема с хранилищем ключей? Теперь, когда я пытаюсь использовать Gmail, появляется вложение, но оно выглядит как пустое изображение со своим именем. Это означает, что файл не найден на смартфоне. Спасибо, парни.

private ShareActionProvider mShareActionProvider;

private void dragonFile(){
    Bitmap dragonFront = BitmapFactory.decodeResource(getResources(),R.drawable.phoenix_art);
    String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
    OutputStream outputStream = null;
    File file = new File(extStorageDirectory, "phoenix_art.jpeg");
    try{  
        outputStream = new FileOutputStream(file);
        dragonFront.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
        outputStream.flush();
        outputStream.close();
    } catch (Exception e){
        e.printStackTrace();
    }

private Intent getDefaultShareIntent(){

    Intent shareIntent = new Intent();
    shareIntent.setType("image/jpeg");
    shareIntent.setAction(Intent.ACTION_SEND);
    dragonFile();
    File downloadedPic = new File(Environment.getExternalStorageDirectory().toString(), "phoenix_art.jpeg");
    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(downloadedPic));
    return shareIntent;
}
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    getMenuInflater().inflate(R.menu.share_menu, menu);

    MenuItem item = menu.findItem(R.id.menu_item_share);

    mShareActionProvider = (ShareActionProvider) item.getActionProvider();

    mShareActionProvider.setShareIntent(getDefaultShareIntent());

    return super.onCreateOptionsMenu(menu);
}

1 ответ

Можете ли вы использовать файловый менеджер в DDMS, чтобы убедиться, что файл действительно был создан? Вы сможете увидеть файл, а затем снять его (с эмулятора или с устройства) на свой компьютер для разработки. Тот факт, что gmail получает файл, который является только именем, но выглядит пустым, означает, что getDefaultShareIntent() видит файл и правильно присоединяет его к намерению. Это означает, что, скорее всего, в dragonfile() проблема возникает, хотя я не вижу, что это такое.

Другие вопросы по тегам