2012-11-17 34 views
9

Tôi cần mở tệp có tiện ích mở rộng tùy chỉnh bằng ứng dụng của mình. Tôi có thể làm điều này bằng cách sử dụng bộ lọc Intent khi tệp nằm trong thẻ sd của tôi. Tôi cũng có thể xem các nút 'tải xuống' và 'xem trước' nếu tệp được gửi dưới dạng tệp đính kèm trong Gmail. Tuy nhiên, khi tôi nhấp vào nút tải xuống/xem trước, tôi nhận được thông báo - "Rất tiếc, không thể tải xuống tệp đính kèm".Android - Mở tệp đính kèm gmail bằng Ứng dụng của tôi

Tôi nghĩ đây là sự cố với ứng dụng của tôi. Nhưng tôi đã có một ý tưởng ngẫu nhiên và cài đặt ứng dụng "Tải xuống tất cả tệp" trên điện thoại của tôi. https://play.google.com/store/apps/details?id=com.hwkrbbt.downloadall&hl=en Sau đó, khi tôi nhấp vào nút tải xuống trong Gmail, cả Tải xuống tất cả tệp và ứng dụng của tôi đều được đề xuất để tải xuống tệp. Tôi đã chọn ứng dụng của mình và mọi thứ hoạt động tốt !!

Đây có phải là vấn đề bảo mật không? Đây là các Bộ lọc Intent của tôi:

<intent-filter > 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:mimeType="*/*" /> 
     <data android:scheme="content" android:host="*" 
      android:pathPattern=".*\\.ate" /> 
     <data android:scheme="file" android:host="*" 
      android:pathPattern=".*\\.ate" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <data android:mimeType="application/*" host="*" android:pathPattern=".*.ate" android:scheme="content" /> 
    </intent-filter> 

EDIT: Đây là thẻ hoạt động đầy đủ.

<activity android:name=".TestApp" 
       android:label="@string/app_name" 
       android:configChanges="orientation|keyboardHidden" 
       android:launchMode="singleTask"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="com.TestApp.TestApp.NOTIFICATION" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     <!-- Opening .ate file start --> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="file" /> 
      <data android:host="*" /> 
      <data android:pathPattern=".*\\.ate" /> 
      </intent-filter> 
    <intent-filter > 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:mimeType="*/*" /> 
     <data android:scheme="content" android:host="*" 
      android:pathPattern=".*\\.ate" /> 
     <data android:scheme="file" android:host="*" 
      android:pathPattern=".*\\.ate" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW"/> 
     <category android:name="android.intent.category.BROWSABLE"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
     <data android:scheme="file" android:pathPattern=".*\\.ate" android:mimeType="application/octet-stream"/> 
     <data android:scheme="content" android:pathPattern=".*\\.ate" android:mimeType="application/octet-stream"/> 
     </intent-filter> 
     <!-- Opening .ate file end --> 
    </activity> 
+0

Bạn đã thử ** android: host = "gmail-ls" **? –

Trả lời

9

Tôi đã tự tìm ra giải pháp, vì vậy tôi đăng giải pháp, trong trường hợp người khác gặp sự cố lạ này.

Bộ lọc ý định đòi hỏi cả về nội dung và chương trình tập tin loại, với các ứng dụng Mimetype/Dòng octet

<intent-filter> 
<action android:name="android.intent.action.VIEW"/> 
<category android:name="android.intent.category.BROWSABLE"/> 
<category android:name="android.intent.category.DEFAULT"/> 
<data android:scheme="file" android:pathPattern=".*\\.inform" android:mimeType="application/octet-stream"/> 
<data android:scheme="content" android:pathPattern=".*\\.inform" android:mimeType="application/octet-stream"/> 

+0

Xin chào Blue, bạn có thể chia sẻ toàn bộ thẻ không? – Giuseppe

+0

Xin chào Giuseppe, hãy kiểm tra câu hỏi của tôi. Tôi đã thêm bản chỉnh sửa. – Manju

+3

Tôi đã thử giải pháp này và nó hoạt động, nhưng nó là gây hiểu nhầm vì 'pathPattern' sẽ bị bỏ qua. Thuộc tính 'pathPattern' bị bỏ qua trừ khi cũng có thuộc tính' scheme' và 'host' được chỉ định cho bộ lọc (câu trả lời của bạn thiếu thuộc tính' host'). Xem [documentation] (http://developer.android.com/guide/topics/manifest/data-element.html) cho thuộc tính 'pathPattern'. Tôi cũng đã thấy điều này trong thực tế. Bộ lọc ý định sẽ xử lý bất kỳ tệp đính kèm nào và không chỉ các tệp đính kèm có phần mở rộng tệp được chỉ định. –

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