簡體   English   中英

如何在Android中獲取應用程序數據目錄

[英]How to Get Application Data Dir in Android

如何獲取Android Fragment或標准Java類(不是Activity)中的Application Data Dir。

我正在做一項作業,需要使用序列化在Android中執行CRUD操作。 到目前為止,我有一個標准的Java類,可以像這樣執行讀寫

private void readFile() {
    try{
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath));
        books = (List<Book>)ois.readObject();
        ois.close();
    }catch (Exception e){
        Log.e(TAG, e.getMessage());
    }
}

private void writeFile(){
    try {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));
        oos.writeObject(books);
        oos.flush();
        oos.close();
    } catch (Exception e){
        Log.e(TAG, e.getMessage());
    }
}

問題是,此類構造函數需要像這樣傳遞String DataDir

公共類BookSvcSioImpl實現IBookSvc {

private final String TAG = "BookSvcSioImpl";
private List<Book> books = null;
private String dataDir = null;
private String filePath = dataDir + "/myBooks.sio";    


public BookSvcSioImpl(String appDataDirectory){
    this.dataDir = appDataDirectory;
    readFile();
}

我使用此String參數來構造文件路徑。 我的問題是如何在Fragment或不是Activity的標准Java類中獲取Application Data Directory。 在Activity中,可以像這樣調用getApplicationInfo.DataDir來獲取它

  String dataDir = getApplicationInfo().dataDir;
                BookSvcSioImpl sioService = new BookSvcSioImpl(dataDir);
                sioService.create(enteredBook);

我無法在Fragment或Java類中執行此操作。

我無法在片段中執行此操作

Fragment上調用getActivity()以獲取承載該片段的Activity

請注意, Activity (或其他Context getFilesDir()上的getFilesDir()getApplicationInfo().dataDir更好,因為我不知道dataDir可以調整以處理平板電腦上的多個帳戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM