2012-01-03 32 views
8

Có cách nào để phát hiện xem gói ứng dụng được lưu trữ trên thẻ SD hay không? Làm cách nào?Có cách nào để phát hiện xem gói ứng dụng được lưu trữ trên thẻ SD hay không?

+0

+1 cho câu hỏi. nhưng bạn không biết liệu ứng dụng có được cài đặt trong sdcard hay điện thoại không? –

+0

Không, tôi cần phát hiện xem ứng dụng có được cài đặt hay không (chỉ trên thẻ SD) – user1074896

+0

Câu hỏi này trùng lặp với: http://stackoverflow.com/questions/4004650/android-2-2-how-do- i-detect-if-i-am-installed-on-the-sdcard-hoặc-không ngoại trừ vì câu trả lời thứ hai chỉ liên quan đến API cấp 8 trở lên. Trang được liên kết đề xuất sử dụng cờ FLAG_EXTERNAL_STORAGE, cho mục đích cụ thể mong muốn. Cờ này đã có sẵn ở cấp API 8. – Carl

Trả lời

0

Có ... Bạn có thể phát hiện ra sự giống nhau ...

Các ứng dụng được tải về từ Android Market được lưu trữ trong /data/app (không có trong thẻ SD). Các ứng dụng hệ thống mặc định được lưu trữ trong /system/app

Tuy nhiên, điện thoại bắt nguồn từ có thể lưu trữ các ứng dụng trong /sdcard/backups/apps

+1

và cách bạn có thể phát hiện ra điều đó? –

+0

Có một ứng dụng cờ gần đây có thể đặt trong tệp kê khai của chúng nếu chúng muốn được cài đặt trên thẻ SD ... – Anders

+0

Mỗi ứng dụng từ thị trường được cài đặt trên bộ nhớ điện thoại theo mặc định. Không có cách nào để di chuyển nó vào thẻ SD mà không cần root thiết bị. ** Apps2SD ** giúp di chuyển các ứng dụng từ bộ nhớ trong sang thẻ SD trên các thiết bị gốc. Và như đã đề cập ở trên, getApplicationInfo(). SourceDir có thể được sử dụng để phát hiện vị trí. – Anil

0
 File f = new file(Environment.getExternalStorageDirectory()+"your apk name"); 
    sytem,out.println(""+f.exsits); 
1

Để làm cho câu trả lời được chấp nhận cụ thể hơn, đây là ví dụ về cách chúng tôi đã chỉnh sửa trong ngữ cảnh truy cập các tệp được ghi vào bộ nhớ trong và bộ nhớ ngoài, theo hướng dẫn của API level 7 hoặc thấp hơn:

{ //... 
    mInternalApp = context.getApplicationInfo().sourceDir.matches("^/data/app/.*"); 
    mPathInternal = context.getApplicationInfo().dataDir + "/files/"; 
    mPathExternal = Environment.getExternalStorageDirectory() + "/Android/data/" 
       + PACKAGE_NAME + "/files/"; 
} 

private File getMyFile() { 
    return (mInternalApp) ? new File(mPathInternal + INT_FILE_NAME) : 
          new File(mPathExternal + EXT_FILE_NAME); 
} 
Các vấn đề liên quan