Intereting Posts
Блокировка от вторжения отключена на переднем плане с режимом Doze – новая оптимизация батарей в Android M Как увеличить размер растрового изображения в соответствии с размером экрана телефона? Как я могу программно создать резервный файл sqlite на SD-карте? Jquery-ui sortable не работает на сенсорных устройствах на базе Android или IOS Получение прямого IP-адреса WiFi моего устройства Как исправить 'cordova' не распознается в командной строке – windows 8? Как сделать объект доступным для всех действий в программе Android? Панель инструментов перемещается за пределы экрана, когда я использую регулировку Как получить код страны ISO в приложениях для Android? Создание базового PSD для разработки пользовательского интерфейса Android App для устройства mdpi, 320 / 480px Проверьте, существует ли каталог с использованием ADB и нажмите файл, если он Тесты Espresso для Android для телефона и планшета Как создать непрерывное повторение прокрутки фонового изображения в Open GL? API Google Maps для Google: скрыть фрагмент маркера Обнаружение цветового кода предварительного просмотра камеры в реальном времени

Как обмениваться имиджем изображения?

У меня есть ImageView, и я хочу поделиться своим изображением.

Ниже приведен мой код,

btshare.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { View content = findViewById(R.id.full_image_view); content.setDrawingCacheEnabled(true); Bitmap bitmap = content.getDrawingCache(); File root = Environment.getExternalStorageDirectory(); File cachePath = new File(root.getAbsolutePath() + "/DCIM/Camera/image.jpg"); try { root.createNewFile(); FileOutputStream ostream = new FileOutputStream(root); bitmap.compress(CompressFormat.JPEG, 100, ostream); ostream.close(); } catch (Exception e) { e.printStackTrace(); } Intent shareIntent = new Intent(Intent.ACTION_SEND); Uri phototUri = Uri.parse("/DCIM/Camera/image.jpg"); shareIntent.setData(phototUri); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_STREAM, phototUri); startActivity(Intent.createChooser(shareIntent, "Share Via")); } }); 

Когда я нажимаю кнопку, я получаю эти ошибки?

 01-13 06:00:19.282: W/System.err(6199): java.io.FileNotFoundException: /storage/emulated/0: open failed: EISDIR (Is a directory) 01-13 06:00:19.286: W/System.err(6199): at libcore.io.IoBridge.open(IoBridge.java:409) 01-13 06:00:19.286: W/System.err(6199): at java.io.FileOutputStream.<init>(FileOutputStream.java:88) 01-13 06:00:19.294: W/System.err(6199): at java.io.FileOutputStream.<init>(FileOutputStream.java:73) 01-13 06:00:19.294: W/System.err(6199): at com.safshari.mandegar.FullImageActivity$3.onClick(FullImageActivity.java:116) 01-13 06:00:19.294: W/System.err(6199): at android.view.View.performClick(View.java:4240) 01-13 06:00:19.294: W/System.err(6199): at android.view.View$PerformClick.run(View.java:17721) 01-13 06:00:19.298: W/System.err(6199): at android.os.Handler.handleCallback(Handler.java:730) 01-13 06:00:19.298: W/System.err(6199): at android.os.Handler.dispatchMessage(Handler.java:92) 01-13 06:00:19.298: W/System.err(6199): at android.os.Looper.loop(Looper.java:137) 01-13 06:00:19.302: W/System.err(6199): at android.app.ActivityThread.main(ActivityThread.java:5103) 01-13 06:00:19.302: W/System.err(6199): at java.lang.reflect.Method.invokeNative(Native Method) 01-13 06:00:19.302: W/System.err(6199): at java.lang.reflect.Method.invoke(Method.java:525) 01-13 06:00:19.302: W/System.err(6199): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 01-13 06:00:19.306: W/System.err(6199): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 01-13 06:00:19.306: W/System.err(6199): at dalvik.system.NativeStart.main(Native Method) 01-13 06:00:19.310: W/System.err(6199): Caused by: libcore.io.ErrnoException: open failed: EISDIR (Is a directory) 01-13 06:00:19.310: W/System.err(6199): at libcore.io.Posix.open(Native Method) 01-13 06:00:19.310: W/System.err(6199): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 01-13 06:00:19.310: W/System.err(6199): at libcore.io.IoBridge.open(IoBridge.java:393) 01-13 06:00:19.314: W/System.err(6199): ... 14 more 01-13 06:00:19.618: E/Genymotion(489): Could not open '/sys/class/power_supply/genymotion_fake_path/present' 

Что мне делать и какие разрешения требуется моей программе? Я уже объявлял следующие разрешения,

 <uses-permission android:name="android.permission.SET_WALLPAPER"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

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

  Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/*"); share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(root.getAbsolutePath() + "/DCIM/Camera/image.jpg")); startActivity(Intent.createChooser(share,"Share via")); 

Добавьте эти разрешения в AndroidMenifest.xml

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

Final Code, чтобы каждый мог использовать для сохранения и совместного использования изображения из imageview:

 View content = findViewById(R.id.full_image_view); content.setDrawingCacheEnabled(true); Bitmap bitmap = content.getDrawingCache(); File root = Environment.getExternalStorageDirectory(); File cachePath = new File(root.getAbsolutePath() + "/DCIM/Camera/image.jpg"); try { cachePath.createNewFile(); FileOutputStream ostream = new FileOutputStream(cachePath); bitmap.compress(CompressFormat.JPEG, 100, ostream); ostream.close(); } catch (Exception e) { e.printStackTrace(); } Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/*"); share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(cachePath)); startActivity(Intent.createChooser(share,"Share via")); } 

Счастливое кодирование

Вы должны добавить это разрешение

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

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

Используйте Context.getExternalCacheDir () для создания кеша и затем обменивайтесь содержимым этого кеша