2011-01-20 32 views
8

tôi đã tự hỏi nếu tôi có thể bắt đầu một Intent để xem một thư mục với một trình duyệt tập tin (nếu có một cài đặt trên thiết bị) để tôi có thể mở một thư mục như thế này:kiểu MIME cho thư mục trong Android

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file:///sdcard/MyFolder"); 
intent.setDataAndType(uri, "MIME TYPE FOR FOLDERS"); 
startActivity(intent); 
+1

Không có loại MIME cho các thư mục theo như tôi biết. – fredley

+2

Ummm .. Bất kỳ manh mối nào về cách mở một thư mục có trình duyệt tệp đã được cài đặt chưa? Cảm ơn – Pedriyoo

Trả lời

3

AndExplorer có các loại nhà cung cấp kịch câm để sử dụng AndExplorer như một file chooser:

  • vnd.android.cursor.dir/lysesoft.andexplorer.director
  • vnd.android.cursor.dir/lysesoft.andexplorer.file

Xem AndExplorer's developper documentation để biết thêm thông tin. Tôi nghĩ những người khám phá tệp khác là các tính năng tương tự, nhưng tôi chưa tìm thấy tài liệu của họ.

+0

Không có lý do gì để chỉ định một ứng dụng cụ thể cho việc này. [Xem câu trả lời này] (http://stackoverflow.com/a/31725812/1748584) để có một giải pháp tốt hơn, tổng quát hơn – Project

2

Blackmoon File Browser phản ứng với kiểu MIME của

  • vnd.android.cursor.item/file

để mở nó nhìn sao cho nội dung của một thư mục được hiển thị hoặc trong trường hợp của một tập tin, đó là thư mục mẹ được hiển thị cuộn để hiển thị tập tin cụ thể.

Bạn có thể xem Blackmoon's dev documentation phác thảo các ý định khác nhau mà nó sử dụng.

Thật tệ khi Android không chỉ định loại MIME cụ thể để xem tệp/thư mục trong ứng dụng duyệt tệp. Bằng cách này, tất cả các ứng dụng quản lý tệp sẽ sử dụng cùng một ý định để người dùng có thể tự do lựa chọn giữa bất kỳ ứng dụng nào hoạt động tốt nhất cho họ thay vì bị khóa vào bất kỳ ứng dụng cụ thể nào.

Tôi đoán đó là lý do tại sao trang web như vậy là http://www.openintents.org/ tồn tại để các nhà phát triển có thể chia sẻ một số tiêu chuẩn hoặc ít nhất xuất bản một số khả năng ứng dụng chuẩn.

3

Chuỗi inode/directory 'và' x-directory/normal 'dường như là kiểu MIME đã tồn tại trước cho các hệ thống dựa trên Unix, theo một số tìm kiếm của Google, nhưng không có gì trên điện thoại của tôi biết vì vậy tôi có lẽ sẽ kiểm tra và cung cấp những cái đó, trước khi tìm kiếm thư mục vnd.android.cursor.item /, ít nhất có giá trị không ràng buộc với một ứng dụng cụ thể.

Tôi muốn được phân loại để sử dụng loại ứng dụng cụ thể.

(Tôi chỉ thấy rằng ES sử dụng 'tài nguyên/thư mục' cũng là plausibly ứng dụng độc lập;. Quá xấu không có cách nào để nói với Android rằng các loại đều tương đương)

+0

Vâng, có vẻ như Cyanogen File Manager (com.cyanogenmod.filemanager) đã sử dụng nó quá – HendraWD

-1

Bởi vì file đó là thư mục don dường như không có loại mime tiêu chuẩn, tôi đã mã hóa trình khám phá tệp của mình để lọc các ý định không có loại mime. Chỉ cần đặt dữ liệu vào thư mục Uri của bạn. Điều này cũng đặt kế hoạch ý định thành "tệp", được bộ lọc ý định của tôi yêu cầu.

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file:///sdcard/MyFolder"); 
intent.setData(uri); 
startActivity(intent); 

ý định này sẽ khởi động sau đây ứng dụng:

http://play.google.com/store/apps/details?id=com.organicsystemsllc.thumbdrive

+1

Nhưng nếu người dùng điện thoại không có ứng dụng đó, nó sẽ thất bại. Tôi đã cố gắng để điện thoại của tôi, nó chỉ hiển thị Drive PDF Viewer và SQLiteViewer thay vì – HendraWD

2

Theo quan chức docs nó là vnd.android.cursor.dir/*

+0

Thật sao? Đó là cho ACTION_PASTE ... – HendraWD

+1

Tôi cho rằng các loại MIME là hành vi bất khả tri. – Archibald

+0

Tôi đã thử nó và đóng ứng dụng, đây là nhật ký lỗi: "java.lang.RuntimeException: Không thể bắt đầu hoạt động ComponentInfo {com.android.gallery3d/com.android.gallery3d.app.GalleryActivity}: java.lang. ClassCastException: com.android.gallery3d.data.UriImage không thể truyền sang com.android.gallery3d.data.MediaSet " – HendraWD

Các vấn đề liên quan