Berikut adalah cara saya mendefinisikan aktivitas saya di AndroidManifest.xml saya untuk membuatnya berfungsi.
<activity android:name="com.keepassdroid.PasswordActivity">
<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:scheme="file" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.kdb" />
<data android:host="*" />
</intent-filter>
</activity>
The scheme
of file
menunjukkan bahwa ini harus terjadi ketika file lokal dibuka (bukan protokol seperti HTTP).
mimeType
dapat diatur */*
agar cocok dengan semua jenis pantomim.
pathPattern
adalah tempat Anda menentukan ekstensi apa yang ingin Anda cocokkan (dalam contoh ini .kdb
). The .*
di awal cocok dengan sembarang pangkat karakter. String ini membutuhkan pelolosan ganda, jadi \\\\.
cocok dengan periode literal. Kemudian, Anda mengakhiri dengan ekstensi file Anda. Satu peringatan dengan pathPattern adalah bahwa .*
ini bukan pertandingan serakah seperti yang Anda harapkan jika ini adalah ekspresi reguler. Pola ini akan gagal untuk mencocokkan jalur yang berisi .
sebelum .kdb
. Untuk pembahasan lebih rinci tentang masalah ini dan solusinya, lihat di sini
Terakhir, menurut dokumentasi Android, atribut host
dan keduanya scheme
diperlukan agar pathPattern
atribut berfungsi, jadi setel saja ke karakter pengganti untuk mencocokkan apa pun.
Sekarang, jika Anda memilih .kdb
file di aplikasi seperti Linda File Manager, aplikasi saya muncul sebagai opsi. Saya harus mencatat bahwa ini saja tidak memungkinkan Anda untuk mendownload jenis file ini di browser, karena ini hanya mendaftar dengan skema file. Memiliki aplikasi seperti Linda File Manager di ponsel Anda menolak secara umum memungkinkan Anda untuk mengunduh semua jenis file.
.kdbx
ekstensi untuk memungkinkan penjelajah file ES membuka file kdbx ketika saya diarahkan ke posting ini. Rupanya jika maksud memiliki tipe MIME kosong, filter maksud ini tidak akan berfungsi !! Selain itu, mungkin saja memiliki maksud dengan string KOSONG sebagai tindakan dan hanya URI. Google Docs menanggapi maksud itu, jadi itu pasti valid.<data>
tag dengan empat atribut. Memiliki 4 tag logis ATAU - Yang berfungsi dengan Android 2 - tetapi Android 4 lebih ketat. Lihat stackoverflow.com/questions/20650378/…\\\\.
cocok dengan periode literal, mengapa Anda tidak menggunakannya untuk membentuk.kdb
ekstensi seperti ini\\\\.kdb
:?Ada banyak informasi yang salah tentang topik ini, paling tidak dari dokumentasi Google sendiri. Yang terbaik, dan mengingat logika yang aneh, mungkin satu-satunya dokumentasi nyata adalah kode sumbernya.
The pelaksanaan maksud filter memiliki logika yang hampir menentang deskripsi. The kode parser adalah bagian terkait lainnya dari teka-teki.
Filter berikut sangat mirip dengan perilaku yang masuk akal. Pola jalur berlaku, untuk
"file"
maksud skema.Pencocokan pola jenis pantomim global akan cocok dengan semua jenis selama ekstensi file cocok. Ini tidak sempurna, tetapi satu-satunya cara untuk mencocokkan perilaku pengelola file seperti ES File Explorer, dan ini terbatas pada maksud yang cocok dengan URI / ekstensi file.
Saya belum menyertakan skema lain seperti di
"http"
sini, tetapi mereka mungkin akan berfungsi dengan baik pada semua filter ini.Skema ganjil adalah
"content"
, yang ekstensi tidak tersedia untuk filter. Namun selama penyedia menyatakan jenis MIME Anda (Misalnya, Gmail akan meneruskan jenis MIME untuk lampiran tanpa hambatan), filter akan cocok.Harus diperhatikan:
scheme
DANhost
harus ditentukan untukpath
aturan untuk mencocokkan (bertentangan dengan panduan API Google, saat ini).""
, yang difilter dengan sangat berbedanull
, tidak mungkin dicocokkan secara eksplisit, dan hanya dapat dicocokkan oleh"*/*"
filter berisiko ."*/*"
Filter TIDAK akan cocok Niat dengannull
tipe MIME - yang membutuhkan filter terpisah untuk kasus khusus ini tanpa tipe MIME sama sekali."content"
Skema hanya bisa ditandingi oleh tipe MIME, karena nama file asli tidak tersedia di maksud (setidaknya dengan Gmail)."data"
elemen terpisah (hampir) tidak relevan dengan interpretasi, dengan pengecualian khusus darihost
danport
- yang berpasangan bersama. Segala sesuatu yang lain tidak memiliki asosiasi khusus dalam suatu"data"
elemen atau antar"data"
elemen.Dengan mengingat semua ini, berikut adalah contoh dengan komentar:
<!-- Capture content by MIME type, which is how Gmail broadcasts attachment open requests. pathPattern and file extensions are ignored, so the MIME type *MUST* be explicit, otherwise we will match absolutely every file opened. --> <intent-filter android:icon="@drawable/icon" android:label="@string/app_name" android:priority="50" > <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" /> <data android:scheme="content" /> <data android:mimeType="application/vnd.my-type" /> </intent-filter> <!-- Capture file open requests (pathPattern is honoured) where no MIME type is provided in the Intent. An Intent with a null MIME type will never be matched by a filter with a set MIME type, so we need a second intent-filter if we wish to also match files with this extension and a non-null MIME type (even if it is non-null but zero length). --> <intent-filter android:icon="@drawable/icon" android:label="@string/app_name" android:priority="50" > <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" /> <data android:host="*" /> <!-- Work around Android's ugly primitive PatternMatcher implementation that can't cope with finding a . early in the path unless it's explicitly matched. --> <data android:pathPattern=".*\\.my-ext" /> <data android:pathPattern=".*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.my-ext" /> </intent-filter> <!-- Capture file open requests (pathPattern is honoured) where a (possibly blank) MIME type is provided in the Intent. This filter may only be necessary for supporting ES File Explorer, which has the probably buggy behaviour of using an Intent with a MIME type that is set but zero-length. It's impossible to match such a type except by using a global wildcard. --> <intent-filter android:icon="@drawable/icon" android:label="@string/app_name" android:priority="50" > <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" /> <data android:host="*" /> <data android:mimeType="*/*" /> <!-- Work around Android's ugly primitive PatternMatcher implementation that can't cope with finding a . early in the path unless it's explicitly matched. --> <data android:pathPattern=".*\\.my-ext" /> <data android:pathPattern=".*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.my-ext" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.my-ext" /> </intent-filter>
sumber
<data android:mimeType="*/*" />
di ketiga opsi dan berfungsi seperti pesona untuk semua aplikasi termasuk Google Drive dan Gmail.Saya harus mengakui bahwa tugas sederhana membuka lampiran dari email dan file dari sistem file di Android telah menjadi salah satu pengalaman yang lebih menjengkelkan. Sangat mudah untuk menangani terlalu banyak atau terlalu sedikit file. Tapi melakukannya dengan benar itu sulit. Sebagian besar solusi yang diposting di stackoverflow tidak berfungsi dengan benar untuk saya.
Persyaratan saya adalah:
Mungkin cara terbaik untuk melakukan tugas ini adalah menentukan Jenis MIME khusus untuk lampiran Anda. Dan Anda mungkin juga akan memilih untuk memiliki ekstensi file khusus. Jadi katakanlah aplikasi kita disebut "Aplikasi Keren" dan kita menghasilkan lampiran file yang memiliki ".cool" di akhir.
Ini adalah waktu terdekat saya untuk mencapai tujuan saya dan berhasil ... memuaskan.
<!-- Register to handle email attachments --> <!-- WARNING: Do NOT use android:host="*" for these as they will not work properly --> <intent-filter> <!-- needed for properly formatted email messages --> <data android:scheme="content" android:mimeType="application/vnd.coolapp" android:pathPattern=".*\\.cool" /> <!-- needed for mangled email messages --> <data android:scheme="content" android:mimeType="application/coolapp" android:pathPattern=".*\\.cool" /> <!-- needed for mangled email messages --> <data android:scheme="content" android:mimeType="application/octet-stream" android:pathPattern=".*\\.cool" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> <!-- Register to handle file opening --> <intent-filter> <data android:scheme="file" android:mimeType="*/*" android:pathPattern=".*\\.cool" android:host="*"/> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter>
Catatan:
pathPattern
tampaknya lebih atau kurang diabaikan untuk lampiran (bila menggunakanandroid:scheme="content"
). Jika seseorang mendapatkan pathPattern untuk merespons hanya pada pola tertentu, saya akan senang melihat caranya.android:host="*"
atribut.intent-filter
blok - blok ini digabungkan tetapi saya belum memverifikasi ini.android:scheme="http"
dapat digunakan. Perhatikan bahwa browser tertentu mungkin mengacaukanandroid:mimeType
eksperimenandroid:mimeType="*/*"
dan memeriksa debugger apa yang sebenarnya dilalui dan kemudian memperketat pemfilteran agar tidak berakhir menjadi aplikasi yang mengganggu yang menangani semuanya .intent-filter
telah diuji dengan aplikasi "File Saya" Samsung di Galaxy S3. FX Explorer masih menolak untuk membuka file dengan benar dan saya juga memperhatikan bahwa ikon aplikasi tidak digunakan untuk file tersebut. Sekali lagi, jika ada yang berhasil, silakan beri komentar di bawah.Saya harap ini berguna bagi Anda dan Anda tidak perlu membuang-buang waktu untuk mempelajari semua kemungkinan kombinasi. Ada ruang untuk perbaikan jadi kami mohon komentarnya.
sumber
android:label
filter maksud adalah string yang akan dilihat pengguna di menu pemilih. Secara default nama aplikasi digunakan.Jawaban Brian di atas memberi saya 90% perjalanan ke sana. Untuk menyelesaikannya, saya menggunakan tipe pantomim
android:mimeType="*/*"
Saya curiga bahwa poster sebelumnya telah mencoba untuk memposting detail yang sama, tetapi dengan tidak memasukkan tanda bintang sebagai kode, stackoverflow menganggapnya hanya sebagai garis miring.
sumber
Daripada
android:path
, cobaandroid:mimeType
, dengan nilai tipe MIME dari konten khusus ini. Juga,android:path
tidak menerima wildcard - gunakanandroid:pathPattern
untuk itu.sumber
Saya sudah mencoba membuat ini berfungsi selama berabad-abad dan pada dasarnya telah mencoba semua solusi yang disarankan dan masih tidak bisa membuat Android mengenali ekstensi file tertentu. Saya memiliki filter maksud dengan file
"*/*"
mimetype yang merupakan satu-satunya hal yang tampaknya berfungsi dan browser file sekarang mencantumkan aplikasi saya sebagai opsi untuk membuka file, namun aplikasi saya sekarang ditampilkan sebagai opsi untuk membuka JENIS file apa pun meskipun Saya telah menentukan ekstensi file tertentu menggunakan tag pathPattern. Sejauh ini bahkan ketika saya mencoba untuk melihat / mengedit kontak di daftar kontak saya, Android bertanya apakah saya ingin menggunakan aplikasi saya untuk melihat kontak, dan itu hanya salah satu dari banyak situasi di mana ini terjadi, SANGAT SANGAT mengganggu.Akhirnya saya menemukan posting grup google ini dengan pertanyaan serupa yang dijawab oleh insinyur kerangka Android yang sebenarnya. Dia menjelaskan bahwa android sama sekali tidak tahu apa-apa tentang ekstensi file, hanya jenis MIME ( https://groups.google.com/forum/#!topic/android-developers/a7qsSl3vQq0 ).
Jadi dari apa yang saya lihat, coba dan baca, Android tidak bisa membedakan antara ekstensi file dan tag pathPattern pada dasarnya adalah pemborosan waktu dan energi yang sangat besar. Jika Anda cukup beruntung karena hanya membutuhkan file dari jenis mime tertentu (misalnya teks, video atau audio), Anda bisa menggunakan filter-maksud dengan jenis mime. Jika Anda memerlukan ekstensi file tertentu atau jenis mime yang tidak dikenal oleh Android, maka Anda kurang beruntung.
Jika saya salah tentang semua ini, tolong beri tahu saya, sejauh ini saya telah membaca setiap posting dan mencoba setiap solusi yang diusulkan yang dapat saya temukan tetapi tidak ada yang berhasil.
Saya dapat menulis satu atau dua halaman lagi tentang seberapa umum hal-hal semacam ini tampaknya ada di Android dan betapa mengacaukan pengalaman pengembang, tetapi saya akan menyelamatkan Anda dari kata-kata kasar saya;). Semoga saya menyelamatkan seseorang dari masalah.
sumber
Perbarui 2020
Android telah beralih ke URI konten dan Jenis MIME untuk filter maksud.
Masalah
URI konten tidak harus berisi ekstensi atau nama file dan akan berbeda di antara berbagai aplikasi yang menyediakan konten / file.
Berikut beberapa contoh URI konten dari aplikasi email yang berbeda untuk lampiran email yang sama :
Gmail ->
content://com.google.android.gm.sapi/[email protected]/message_attachment_external/%23thread-a%3Ar332738858767305663/%23msg-a%3Ar-5439466788231005876/0.1?account_type=com.google&mimeType=application%2Foctet-stream&rendition=1
Outlook ->
content://com.microsoft.office.outlook.fileprovider/outlookfile/data/data/com.microsoft.office.outlook/cache/file-download/file--2146063402/filename.customextention
Aplikasi Email Samsung ->
content://com.samsung.android.email.attachmentprovider/1/1/RAW
Seperti yang dapat dilihat, semuanya berbeda dan tidak dijamin berisi apa pun yang terkait dengan file Anda yang sebenarnya. Jadi, Anda tidak dapat menggunakan
android:pathPattern
seperti yang kebanyakan disarankan.Solusi solusi untuk lampiran email
<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="content"/> <data android:host="*"/> <!-- Required for Gmail and Samsung Email App --> <data android:mimeType="application/octet-stream"/> <!-- Required for Outlook --> <data android:mimeType="application/my-custom-extension"/> </intent-filter>
Melalui pengujian saya menemukan Jenis MIME yang digunakan Gmail, Outlook, dan Samsung Email dan menambahkannya ke filter maksud saya.
Peringatan / Gotchas
Saya menemukan bahwa dengan solusi saya di atas, jika saya membuka file apa pun yang merupakan tipe biner, itu akan secara otomatis meluncurkan aplikasi saya. Saya menangani ini dalam aktivitas saya dengan menampilkan status gagal jika kami tidak dapat mengurai file. Saya pikir ini adalah acara yang sangat langka sehingga dapat diterima.
Saya tidak dapat menemukan cara untuk meluncurkan aplikasi saya melalui file browser tanpa menambahkan
<data android:mimeType="*/*"/>
ke filter maksud saya. Saya tidak dapat menggunakan ini karena ia akan meluncurkan aplikasi saya setiap kali pengguna mengklik file apa pun di ponsel mereka (bukan hanya file-ekstensi khusus). Saya tidak akan merekomendasikan menambahkan ini ke filter-maksud Anda.Pikiran Akhir
sumber
Jawaban Brian sangat dekat, tetapi berikut adalah cara yang bersih dan bebas kesalahan agar aplikasi Anda dipanggil saat mencoba membuka file dengan ekstensi khusus Anda sendiri (tidak perlu skema atau host):
<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:pathPattern="*.*\\.kdb" /> </intent-filter>
sumber
<data>
tag dengan empat atribut. Solusi Anda mungkin berfungsi dengan Android 2 - tetapi aturan menjadi lebih ketat: stackoverflow.com/questions/20650378/…host
danscheme
dibutuhkan!Di Android 4, aturan menjadi lebih ketat dari sebelumnya. Menggunakan:
<data android:host="" android:mimeType="*/*" android:pathPattern=".*\\.ext" android:scheme="file" ></data>
sumber
Saya telah berjuang dengan ini cukup banyak untuk ekstensi file khusus, saya sendiri. Setelah banyak mencari, saya menemukan halaman web ini di mana poster menemukan bahwa kelas patternMatcher Android (yang digunakan untuk pencocokan pathPattern di Intent-Filters) memiliki perilaku yang tidak terduga ketika jalur Anda berisi karakter pertama dari pola pencocokan Anda di tempat lain di jalur (seperti jika Anda mencoba mencocokkan "* .xyz", kelas patternMatcher berhenti jika sebelumnya ada "x" di jalur Anda). Inilah yang dia temukan untuk mengatasinya, dan berhasil untuk saya, meskipun ini sedikit hack:
<intent-filter> ... <data android:pathPattern=".*message.*" /> <data android:pathPattern=".*m.*message.*" /> <data android:pathPattern=".*m.*m.*message.*" /> <data android:pathPattern=".*m.*m.*m.*message.*" /> <data android:pathPattern=".*m.*m.*m.*m.*message.*" /> ... </intent-filter>
sumber
Tak satu pun dari yang di atas berfungsi dengan baik, untuk tindakan VIEW atau SEND, jika sufiks tidak terdaftar dengan jenis MIME dalam database system = wide MIME Android. Satu-satunya pengaturan yang saya temukan bahwa api untuk sufiks yang ditentukan termasuk
android:mimeType="*/*"
, tetapi kemudian tindakan tersebut diaktifkan untuk SEMUA file. Jelas BUKAN yang Anda inginkan!Saya tidak dapat menemukan solusi yang tepat tanpa menambahkan mime dan sufiks ke database Android mime, sejauh ini, saya belum menemukan cara untuk melakukannya. Jika ada yang tahu, penunjuk akan sangat bagus.
sumber
Saat Intent memenuhi a
intent-filter
, ini adalahintent-filter
persyaratannya: (bayangkan daftar periksa).<action>
<category>
<data mimeType>
(perbaikan mudah: " / ")Opsional:
Setiap pencocokan
<data scheme>
(mudah memperbaiki:<data android:scheme="file" /> <data android:scheme="content" />
)Semua yang cocok
<data host>
(perbaikan mudah: "*")<data pathPattern/etc.>
(misalnya.*\\.0cc
)Mendefinisikan beberapa
<data $type="">
elemen centang kotak $ type iff ada yang<data $type=>
cocok denganIntent
.Menghilangkan mimeType akan merusak Anda
intent-filter
, meskipun tampaknya berlebihan. Menghilangkan<data scheme/host/pathPattern>
menyebabkan filter Anda cocok dengan semuanya.https://f-droid.org/en/packages/de.k3b.android.intentintercept/ adalah aplikasi yang dirancang untuk menerima semua maksud, dan memungkinkan Anda untuk memeriksa maksud tersebut. Saya mengetahui bahwa ekstensi file tidak dikenal yang dibuka melalui Simple File Manager dikirimkan dengan tipe MIME
application/octet-stream
.https://stackoverflow.com/a/4621284/2683842 melaporkan yang
<data pathPattern=>
.*xyz
dibatalkan pada saat pertama kalix
dilihat, dan akan langsung gagal jika tidak diikuti olehyz
. Jadi/sdcard/.hidden/foo.0cc
tidak akan lulus.*\\.0cc
kecuali Anda mencobanya.*\\..*\\.0cc
.Hasil akhir:
<activity android:name=".Ft2NsfActivity"> <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:scheme="file" /> <data android:scheme="content" /> <data android:host="*" /> <data android:pathPattern=".*\\.ftm"/> <data android:pathPattern=".*\\..*\\.ftm"/> <data android:pathPattern=".*\\..*\\..*\\.ftm"/> <data android:pathPattern=".*\\..*\\..*\\..*\\.ftm"/> <data android:pathPattern=".*\\.0cc"/> <data android:pathPattern=".*\\..*\\.0cc"/> <data android:pathPattern=".*\\..*\\..*\\.0cc"/> <data android:pathPattern=".*\\..*\\..*\\..*\\.0cc"/> <data android:mimeType="*/*" /> </intent-filter> </activity>
sumber
Jika Anda ingin file dibuka langsung dari Gmail, dropbox, atau alat file android buildin apa pun, gunakan kode berikut (hapus 'android: host = "*"' yang membuat file tidak dapat dijangkau untuk gmail):
<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="content" android:pathPattern=".*\\.kdb" android:mimeType="application/octet-stream"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="file" android:mimeType="*/*" android:pathPattern=".*\\.kdb"/> </intent-filter>
Filter data harus ditulis dalam satu pernyataan sesuai Android versi 4.x
sumber
Menggunakan filter seperti di bawah ini untuk membuka dari browser, gmail & file browser (Diuji). CATATAN: Harap jangan menggabungkan dua filter, yang akan membuat browser mengabaikan aplikasi Anda (Teruji).
<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:scheme="file" android:pathPattern=".*\\.ext" android:mimeType="application/*"/> <data android:scheme="content" android:pathPattern=".*\\.ext" android:mimeType="application/*"/> </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:scheme="http" android:host="*" android:pathPattern=".*\\.ext" /> <data android:scheme="https" android:host="*" android:pathPattern=".*\\.ext" /> <data android:scheme="ftp" android:host="*" android:pathPattern=".*\\.ext" /> </intent-filter>
sumber
Baca https://developer.android.com/training/sharing/receive ini , ini dapat membantu untuk memulai. lalu dalam file manifes coba filter maksud di bawah ini saat mendaftarkan penerima dalam aktivitas yang akan dibuka
<intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:scheme="content"/> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="application/your_extension" /> </intent-filter>
pastikan ekstensi diberikan tanpa "." di dalamnya
sumber