сохранение Android на SD-карту - PullRequest
       18

сохранение Android на SD-карту

3 голосов
/ 03 апреля 2011

привет всем, у меня небольшая проблема

у меня есть этот код для сохранения изображения на SD-карту

public String SDSave( ) { //View arg0
                // TODO Auto-generated method stub
                OutputStream outStream = null;
                File file = new File( extStorageDirectory , AdName + ".PNG");
                try {
                    outStream = new FileOutputStream(file);
                    bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
                    outStream.flush();
                    outStream.close();

                    Toast.makeText(WhereAmI.this, "Saved", Toast.LENGTH_LONG).show();

                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Toast.makeText(WhereAmI.this, e.toString(), Toast.LENGTH_LONG).show();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Toast.makeText(WhereAmI.this, e.toString(), Toast.LENGTH_LONG).show();
                }

            }

и я вызываю его из другого метода, подобного этому:

String sdSave = SDSave(extStorageDirectory + "/qr11.PNG");

и я показываю 2 ошибки: первая находится в методе в public String SDSave( ), и он говорит:

This method must return a result of type String

, а вторая в String sdSave = SDSave(extStorageDirectory + "/qr11.PNG");, и в нем говорится:

The method SDSave() in the type WhereAmI is not applicable for the arguments (String)

помогите пожалуйста как это исправить .....

спасибо

Ответы [ 5 ]

1 голос
/ 03 апреля 2011

Вы просите свой метод вернуть строку

 public String SDSave()

вам понадобится строка в конце кода:

return "someString"; 

Если вы не хотите возвращатьиспользование строки:

public void SDSave()

Вторая ошибка: вы пытаетесь передать строку в ваш метод, но ваш метод не принимает никаких переменных.Вам понадобится:

public void SDSave(String myInputStringVariable)

Да, это базовые Java, так что я бы прочитал об Java и OO, также проверьте это:

Десятка ошибок Java-программистовСделайте

1 голос
/ 14 апреля 2011

попробуйте это: напишите в файле манифеста о разрешении пользователя .....

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

Надеюсь, это поможет вам.

1 голос
/ 03 апреля 2011

Вы объявили свой метод как public String, что означает, что он должен возвращать объект String из функции (используя ключевое слово return), если вы не хотите, чтобы функция возвращала что-либо, используйте вместо этого ключевое слово voidиз String.

Вторая ошибка означает, что где-то вы вызывали метод SDSave, используя в качестве аргументов строку (SDSave(extStorageDirectory + "/qr11.PNG");), в то время как эта функция не принимает аргументов (public String SDSave( )).

Я предлагаю вам попробовать учебник по Java или two , так как эти правила являются самой основой Java (и на самом деле, многих языков программирования).

0 голосов
/ 04 апреля 2014

Эй, вы можете использовать мой пример кода, предоставленный в Github repo ссылка Этот образец содержит:

  1. Загрузить изображение из Интернета.
  2. Вы также можете поделиться этим изображением.
  3. Вы можете сохранить это изображение на SD-карте.
  4. Кэширование изображений также существует
0 голосов
/ 02 ноября 2012
public void SDSave(String file){
    File f=new File(file);
    ...
}
...