Как поделиться растровым изображением с намерением в Android? - PullRequest
1 голос
/ 15 июня 2019

(Этот вопрос не является дубликатом!)

Как я могу поделиться изображением с помощью намерения?

Я пробовал это

Android Share Намерение для растрового изображения - возможно ли не сохранить его до совместного использования?

Какподелиться изображением в социальных сетях с помощью растрового изображения?

поделиться изображением с URL-адресом android намерения

, но работал только на эмуляторе, не работал на реальном телефоне и сделал следующую ошибку кода:

//b method : convert inputstream to bitmap
String bitmapPath = MediaStore.Images.Media.insertImage(getContentResolver(), b(inputStream) ,"title", null);

Полный код:

InputStream is = getAssets().open(imageName.getText().toString());
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
String path = Environment.getExternalStorageDirectory()+"/" + APP_NAME()+"/pictures/"+ls+"/" ;
new File(path).mkdirs();
String fileName = System.currentTimeMillis() + imageName.getText().toString().replace("pic/" , "");
FileOutputStream fileOutputStream = new FileOutputStream(new File(path+fileName));
fileOutputStream.write(buffer);
fileOutputStream.close();
InputStream inputStream = new FileInputStream(new File(path+fileName));

String bitmapPath = MediaStore.Images.Media.insertImage(getContentResolver(), b(inputStream) ,"title", null);
Uri bitmapUri = Uri.parse(bitmapPath);

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM , bitmapUri);
startActivity(intent);


//Intent intent = new Intent(android.content.Intent.ACTION_SEND);
//intent.putExtra(Intent.EXTRA_STREAM, bitmapUri);
//intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
//intent.setType("image/*");
//startActivity(intent);

1 Ответ

0 голосов
/ 15 июня 2019

Моя проблема была решена с небольшим изменением в моем коде:

Uri bitmapUri = Uri.parse (new File (path + fileName) .toString ());

Полный код:

InputStream is = getAssets().open(imageName.getText().toString());
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
String path = Environment.getExternalStorageDirectory()+"/" + APP_NAME()+"/pictures/"+ls+"/" ;
new File(path).mkdirs();
String fileName = System.currentTimeMillis() + imageName.getText().toString().replace("pic/" , "");
FileOutputStream fileOutputStream = new FileOutputStream(new File(path+fileName));
fileOutputStream.write(buffer);
fileOutputStream.close();
//InputStream inputStream = new FileInputStream(new File(path+fileName));

//String bitmapPath = MediaStore.Images.Media.insertImage(getContentResolver(),b(inputStream) ,"title", null); // comment this line
Uri bitmapUri = Uri.parse(new File(path+fileName).toString()); //changed

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM , bitmapUri);
startActivity(intent);

if (new File(path+fileName).exists()){
    new File(path+fileName).delete();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...