2016-01-28 52 views
1

這裏是我的代碼:Android應用程序說該文件不存在,但它確實存在。我需要安裝它

 String dir = getFilesDir().getAbsolutePath(); 
     File myFile = new File(dir+"/file.apk"); 

     if (myFile.exists()) 
     { 
      textView.setText("File exists."); 
     } 
     else 
     { 
      textView.setText("File does not exist."); 
     } 

myFile.exists()是假的。我不知道爲什麼。該文件存在並位於該目錄中。

當我解決問題,我會嘗試這樣的:

  Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); 
      intent.setData(Uri.fromFile(myFile)); 
      intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 

有人能幫忙嗎?爲什麼它看不到該文件?

UPDATE:

這真的很奇怪。如果我使用代碼:

  if (myFile.exists()) 
      { 
       textView.setText("it exists"); 
      } 
      else 
      { 
       textView.setText(myFile.getAbsolutePath()); 
      } 

,它轉到'else'並顯示'不存在'文件的路徑。

+0

app永遠不會說錯!檢查文件是否存在或不使用文件資源管理器或檢查你是否使用正確的文件路徑? –

+0

它確實存在。我可以通過資源管理器訪問它並手動安裝。 – Mike

+0

再次驗證文件路徑! –

回答

0

感謝greenapps:向上箭頭

「請點擊天文應用程序留下來的話主要看真實路徑/主/不存在於一個Android設備上,這是一個Astro發明,Astro顯示外部存儲器和Primary,還有一個更好的文件資源管理器,比如ES文件資源管理器,告訴你真實路徑「

我使用Astro字符串指向'/ sdcard/data/data/...「) 。

0

嘗試使用此代碼:

String dir = getFilesDir().getAbsolutePath(); 
    boolean fileExists = (new File(dir + "/file.apk")).isFile(); 

    if (fileExists) 
    { 
     // your file exists 
    } 
    else 
    { 
     // your file does not exist 
    } 
0

如果使用2-arg構造函數構造文件,則可以避免添加依賴於系統的路徑分隔符。像這樣:

File myFile = new File(dir, "file.apk"); 
相關問題