2017-05-06 15 views
6

Tôi có một ứng dụng nhận url từ máy chủ, sử dụng Firebase. Khi nhận được url, tệp tại url đó được tự động lưu vào bộ nhớ cục bộ (chúng là các tệp gpx).Android Studio - nhắc mở tệp đã tải xuống với bất kỳ ứng dụng nào có sẵn

Nhưng sau này, tôi muốn ứng dụng của tôi nhắc người dùng mở tệp đã tải xuống với bất kỳ ứng dụng điều hướng nào mà họ đã cài đặt trên điện thoại của họ. Tương tự như khi bạn tự quản lý tập tin, hãy nhấp vào một tệp và hệ thống hiển thị cho bạn tất cả các ứng dụng có thể mở tệp đó và cho phép bạn chọn (hoặc mở tệp trực tiếp với cài đặt mặc định của mình).

Tôi không thể tìm thấy gì về điều này và tìm kiếm chứa "android studio" và "open file" hiển thị phần lớn hướng dẫn về cách tự quản lý các tệp nguồn, vì vậy chúng hoàn toàn không hữu ích.

+2

Có thể http://stackoverflow.com/questions/6265298/action-view-intent-for-a-file-with-unknown-mimetype điều này có thể giúp bạn. –

Trả lời

1

Bạn có thể làm một cái gì đó như:

String mimeType = myMime.getMimeTypeFromExtension(fileExt(getFile()).substring(1)); 
newIntent.setDataAndType(Uri.fromFile(getFile()),mimeType); 

private String fileExt(String url) { 
    if (url.indexOf("?") > -1) { 
     url = url.substring(0, url.indexOf("?")); 
    } 
    if (url.lastIndexOf(".") == -1) { 
     return null; 
    } else { 
     String ext = url.substring(url.lastIndexOf(".") + 1); 
     if (ext.indexOf("%") > -1) { 
      ext = ext.substring(0, ext.indexOf("%")); 
     } 
     if (ext.indexOf("/") > -1) { 
      ext = ext.substring(0, ext.indexOf("/")); 
     } 
     return ext.toLowerCase(); 
    } 
} 

này cho phép bạn để có được những loại dựa trên phần mở rộng tập tin. Sau đó, chỉ cần startActivity đi qua trong số newIntent. Điều này sẽ đạt được những gì bạn đang tìm kiếm.

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