Как я могу записать данные в файл и получить к ним доступ вне приложения (без SD-карты)? - PullRequest
1 голос
/ 02 октября 2011

Я довольно новичок в программировании на Android и пишу свое самое первое приложение для дипломной работы. Теперь я почти закончил, но осталась одна вещь, которую я не мог получить нигде в сети. Так что, может быть, кто-то здесь может помочь.

Часть того, что должно делать мое приложение, - записывать результаты предыдущих операций в свободно доступный файл для последующего анализа. Итак, что я получил, так это то, что я могу записать файл на SD-карту со следующим кодом:

String packageName = this.getClass().getPackage().getName();
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/Android/data/" + packageName + "/files/";
if (isExternalStorageAvailable() && isExternalStorageWritable()) 
{
    String filename = "_results.dat";

    boolean exists = (new File(path)).exists();
    if (!exists) 
    {
         new File(path).mkdirs();
    }
    // Open output stream
    FileOutputStream fOut = new FileOutputStream(path + filename,true);

    fOut.write("lalala".getBytes());
        etc.
     }

public static boolean isExternalStorageAvailable() 
{ 
    // Retrieving the external storage state
    String state = Environment.getExternalStorageState();

    // Check if available
    if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) 
    {
        return true;
    }

    return false;
 }


public static boolean isExternalStorageWritable() 
{       
    // Retrieving the external storage state
    String state = Environment.getExternalStorageState();

    // Check if writable
    if (Environment.MEDIA_MOUNTED.equals(state)) 
    {
      return true;
    }

    return false;

 }

Этот файл я могу получить позже, скопировать, что угодно. Как я хочу, чтобы это было. Теперь актуальный вопрос:

Есть ли способ добиться этого без SD-карты в телефоне? Или я могу писать только в «app-memory» (чего не хватит моим потребностям)? Я спрашиваю только потому, что пока в телефонах нет SD-карт, где я собираюсь развернуть приложение. И мы должны решить, должны ли мы «обновить» устройства:).

1 Ответ

1 голос
/ 02 октября 2011

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

MODE_PRIVATE создаст файл (или заменит файл с тем же именем) и сделайте его закрытым для вашего приложения.Другие доступные режимы: MODE_APPEND, MODE_WORLD_READABLE и MODE_WORLD_WRITEABLE.

...