ImageView Поделиться Намерением - PullRequest
0 голосов
/ 20 марта 2012

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

                alertDialog.setButton2("Share",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int which) {
                            imgView.setDrawingCacheEnabled(true);
                            Bitmap b = imgView.getDrawingCache();
                            File sdCard = Environment.getExternalStorageDirectory();
                            File file = new File(sdCard, "image.jpg");
                            FileOutputStream fos;
                            try {
                                fos = new FileOutputStream(file);
                                b.compress(CompressFormat.JPEG, 95,fos);
                               } catch (FileNotFoundException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                               }

                            Log.d("Save Example", "Image saved.");

                            Intent intent = new Intent(Intent.ACTION_SEND);
                            intent.setType("image/jpeg");
                            intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/image.jpg"));

                            startActivity(Intent.createChooser(intent, "Share Picture Via..")); 
                        }   

            });

            alertDialog.show();
            return true;

Обновление: похоже, проблема с

b.compress(CompressFormat.JPEG, 95, fos);

, который постоянно говорит нулевой указатель.

Оказывается, нулевой указатель на самом деле является ошибкой read_only .. Так что на самом деле он не записывает файл, я получаю файловую систему ioexception только для чтения.Почему он это делает?

1 Ответ

0 голосов
/ 19 июня 2012
imgView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); imgView.layout(0, 0, imgView.getMeasuredWidth(), imgView.getMeasuredHeight());

Посмотрите, поможет ли это раньше

 Bitmap b = imgView.getDrawingCache();

Также посмотрите, поможет ли это Кэш для рисования Android

...