как отформатировать путь для использования в uri.parse () для Android - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть изображение, которое находится в следующем месте (оно находится в моих ресурсах рабочей области Android),

D:\Android\WorkSpace\myprojectname\res\drawable-hdpi

Я использовал следующую строку кода, чтобы прикрепить это изображение к электронному письму, но оно не 'Кажется, он не работает, он отправляет электронное письмо, но в нем нет вложения.

emailIntent.putExtra(android.content.Intent.EXTRA_STREAM,Uri.parse("android.resource://com.mywebsite.myprojectname/" + R.drawable.image));

это неправильно?

Ответы [ 3 ]

1 голос
/ 15 ноября 2011
    Resources res = this.getResources();
    Bitmap bm = BitmapFactory.decodeResource(res, R.drawable.image);

    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

    File f = new File(Environment.getExternalStorageDirectory(), "image.jpg");

    try {
        f.createNewFile();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //write the bytes in file
    FileOutputStream fo = null;
    try {
        fo = new FileOutputStream(f);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        fo.write(bytes.toByteArray());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Uri uri = Uri.fromFile(f);

После этого

Если вы отправляете электронное письмо, сделайте следующее:

    intent.putExtra(Intent.EXTRA_STREAM, uri);

Это будет работать точноэто сработало полностью.Попробуй.

0 голосов
/ 17 ноября 2011

Другие ответы тоже могут сработать (хотя у меня они не сработали)!Я запустил его, используя только одну строчку кода, которая очень проста и легка.Спасибо всем.

emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://" + getPackageName() + "/" + R.drawable.image));

Я думаю, что моя проблема была в том, что я неправильно указывал имя пакета, но с помощью метода getPackageName () эта проблема решена!

0 голосов
/ 15 ноября 2011

Ну, первая проблема в том, что даже если этот формат URI правильный (в чем я сомневаюсь), этот файл будет находиться в изолированной программной среде вашего приложения, которая недоступна для действия электронной почты (или любого другого действия, для этого).иметь значение).В любом случае, вам нужно будет записать этот файл на SD-карту, а почтовая программа прочитает его оттуда.Вы можете вывести растровое изображение, используя следующий код:

Bitmap image = BitmapFactory.decodeResource(getResources(),R.drawable.image);
File file = new File(Environment.getExternalStorageDirectory(), "forEmail.PNG");

OutputStream outStream = new FileOutputStream(file);
image.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();

Затем используйте Uri.fromFile() для генерации URI из файла, определенного выше:

emailIntent.putExtra(android.content.Intent.EXTRA_STREAM, Uri.fromFile(file));

(Код для ресурса, адаптированного к файлус здесь )

...