lightbulb_outline Help shape the future of the Google Play Console, Android Studio, and Firebase. Start survey

sintaks:
<uses-feature
  android:name="string"
  android:required=["true" | "false"]
  android:glEsVersion="integer" />
dimuat dalam:
<manifest>
keterangan:
Mendeklarasikan fitur perangkat keras atau perangkat lunak tunggal yang digunakan oleh aplikasi.

Tujuan dari deklarasi <uses-feature> adalah untuk menginformasikan setiap entitas eksternal dari kumpulan fitur perangkat keras dan perangkat lunak yang menjadi ketergantungan aplikasi Anda. Elemen ini menawarkan atribut required sehingga Anda bisa menentukan apakah aplikasi membutuhkan fitur dan tidak bisa berfungsi tanpa fitur yang dideklarasikan, atau apakah aplikasi lebih memilih fitur namun tetap dapat berfungsi tanpanya . Karena dukungan fitur bisa berbeda-beda antar perangkat Android, elemen <uses-feature> berperan penting dalam membolehkan aplikasi menjelaskan fitur variabel-perangkat yang digunakannya.

Set fitur tersedia yang dideklarasikan aplikasi Anda sesuai dengan set konstanta fitur yang disediakan oleh PackageManager Android, yang dicantumkan untuk kemudahan di bagian Referensi Fitur di bagian bawah dokumen ini.

Anda harus menetapkan setiap fitur dalam elemen <uses-feature> yang terpisah, sehingga jika aplikasi membutuhkan beberapa fitur, aplikasi akan mendeklarasikan beberapa elemen <uses-feature>. Misalnya, sebuah aplikasi yang membutuhkan fitur Bluetooth dan kamera pada perangkat akan mendeklarasikan dua elemen ini:

<uses-feature android:name="android.hardware.bluetooth" />
<uses-feature android:name="android.hardware.camera" />

Secara umum, Anda harus selalu memastikan untuk mendeklarasikan elemen <uses-feature> untuk semua fitur yang dibutuhkan aplikasi.

Elemen <uses-feature> dideklarasikan hanya sebagai informasi, yang berarti bahwa sistem Android tidak memeriksa dukungan fitur yang cocok pada perangkat sebelum memasang aplikasi. Namun, layanan (seperti Google Play) atau aplikasi lainnya bisa memeriksa deklarasi <uses-feature> aplikasi sebagai bagian dari penanganan atau interaksi dengan aplikasi Anda. Untuk alasan ini, sangat penting agar Anda mendeklarasikan semua fitur (dari daftar di bawah) yang digunakan aplikasi.

Untuk beberapa fitur, mungkin ada atribut tertentu yang memungkinkan Anda untuk menentukan versi fitur, seperti versi Open GL yang digunakan (dideklarasikan dengan glEsVersion). Fitur lain yang bisa ada atau tidak ada untuk perangkat, seperti kamera, dideklarasikan menggunakan atribut name.

Meskipun elemen <uses-feature> hanya diaktifkan untuk perangkat yang menjalankan API Level 4 atau yang lebih tinggi, disarankan untuk memasukkan elemen ini untuk semua aplikasi, bahkan jika minSdkVersion adalah "3" atau lebih rendah. Perangkat yang menjalankan versi platform lama akan mengabaikan elemen.

Catatan: Ketika mendeklarasikan fitur, ingat bahwa Anda juga harus meminta izin yang sesuai. Misalnya, Anda masih harus meminta izin CAMERA sebelum aplikasi Anda bisa mengakses API kamera. Meminta izin memberikan aplikasi Anda akses ke perangkat keras dan perangkat lunak yang tepat, sementara mendeklarasikan fitur yang digunakan oleh aplikasi akan memastikan kompatibilitas perangkat yang tepat.

atribut:
android:name
Menetapkan fitur perangkat keras atau perangkat lunak tunggal yang digunakan oleh aplikasi, sebagai string deskriptor. Nilai atribut yang valid tercantum dalam bagian Fitur Perangkat Keras dan Fitur Perangkat Lunak. Nilai atribut ini peka huruf besar.
android:required
Nilai boolean yang menunjukkan bahwa aplikasi membutuhkan fitur yang ditetapkan dalam android:name.
  • Ketika mendeklarasikan android:required="true" untuk sebuah fitur, Anda menetapkan bahwa aplikasi tidak bisa berfungsi, atau tidak dirancang untuk berfungsi, ketika fitur yang ditetapkan tidak terdapat pada perangkat.
  • Ketika Anda mendeklarasikan android:required="false" untuk sebuah fitur, berarti bahwa aplikasi lebih memilih menggunakan fitur jika terdapat pada perangkat, namun itu dirancang untuk berfungsi tanpa fitur yang ditetapkan, jika diperlukan.

Nilai default untuk android:required jika tidak dideklarasikan adalah "true".

android:glEsVersion
Versi OpenGL ES yang dibutuhkan oleh aplikasi. 16 bit yang lebih tinggi mewakili bilangan mayor dan 16 bit yang lebih rendah menunjukkan bilangan minor. Misalnya , untuk menetapkan OpenGL ES versi 2.0, Anda menyetel nilai sebagai "0x00020000", atau untuk menetapkan OpenGL ES 3.2, Anda menyetel nilai sebagai "0x00030002".

Sebuah aplikasi harus menetapkan paling banyak satu atribut android:glEsVersion dalam manifesnya. Jika itu menetapkan lebih dari satu, android:glEsVersion dengan nilai numerik tertinggi yang akan digunakan dan nilai-nilai lain diabaikan.

Jika aplikasi tidak menetapkan atribut android:glEsVersion , maka aplikasi dianggap hanya membutuhkan OpenGL ES 1.0, yang didukung oleh semua perangkat Android.

Sebuah aplikasi bisa berasumsi bahwa jika platform mendukung versi OpenGL ES yang diberikan, itu juga mendukung semua versi OpenGL ES yang lebih rendah secara numerik. Oleh karena itu, aplikasi yang memerlukan OpenGL ES 1.0 dan OpenGL ES 2.0 harus menyebutkan bahwa aplikasi memerlukan OpenGL ES 2.0.

Sebuah aplikasi yang bisa bekerja dengan beberapa versi OpenGL ES seharusnya hanya menetapkan versi OpenGL ES terendah secara numerik yang dibutuhkannya. (Aplikasi bisa memeriksa pada saat waktu proses apabila tersedia level OpenGL ES yang lebih tinggi.)

Untuk informasi selengkapnya tentang penggunaan OpenGL ES, termasuk cara memeriksa versi OpenGL ES yang didukung saat waktu proses, lihat Panduan OpenGL ES API.

diperkenalkan dalam:
API Level 4
lihat juga:

Pemfilteran Berbasis-Fitur dan Google Play

Google Play memfilter aplikasi yang terlihat pengguna, sehingga pengguna bisa melihat dan mengunduh hanya aplikasi yang kompatibel dengan perangkat mereka. Salah satu cara memfilter aplikasi adalah dengan kompatibilitas fitur.

Untuk menentukan kompatibilitas fitur aplikasi dengan perangkat pengguna tertentu, Google Play membandingkan:

  • Fitur yang diperlukan oleh aplikasi — aplikasi mendeklarasikan fitur di elemen <uses-feature> dalam manifesnya
    dengan...
  • Fitur yang tersedia pada perangkat, dalam perangkat keras atau perangkat lunak — perangkat melaporkan fitur yang didukungnya sebagai properti sistem hanya-baca.

Untuk memastikan perbandingan fitur yang akurat, Android Package Manager menyediakan set konstanta fitur bersama yang digunakan aplikasi dan perangkat untuk mendeklarasikan persyaratan dan dukungan fitur. Konstanta fitur yang tersedia tercantum dalam bagian Referensi Fitur di bagian bawah dokumen ini, dan dalam dokumentasi kelas untuk PackageManager.

Ketika pengguna meluncurkan Google Play, aplikasi akan melakukan kueri Package Manager untuk daftar fitur yang tersedia pada perangkat dengan memanggil getSystemAvailableFeatures(). Aplikasi Store kemudian memberikan daftar fitur ke Google Play saat membuat sesi untuk pengguna.

Setiap kali Anda mengunggah aplikasi ke Google Play Developer Console, Google Play akan memindai file manifes aplikasi. Itu mencari elemen <uses-feature> dan mengevaluasinya saat dikombinasikan dengan elemen lain, dalam beberapa kasus, seperti elemen <uses-sdk> dan <uses-permission>. Setelah membuat set fitur yang diperlukan aplikasi, itu menyimpan daftar tersebut secara internal sebagai metadata yang terkait dengan .apk aplikasi dan versi aplikasi.

Ketika pengguna menelusuri atau menjelajah aplikasi menggunakan aplikasi Google Play, layanan akan membandingkan fitur yang dibutuhkan oleh setiap aplikasi dengan fitur yang tersedia pada perangkat pengguna. Jika semua fitur yang diperlukan aplikasi terdapat pada perangkat, Google Play akan mengizinkan pengguna untuk melihat aplikasi dan mengunduhnya. Jika suatu fitur yang diperlukan tidak didukung oleh perangkat, Google Play memfilter aplikasi sehingga tidak terlihat oleh pengguna dan tidak bisa diunduh.

Karena fitur yang Anda deklarasikan dalam elemen <uses-feature> secara langsung memengaruhi cara Google Play memfilter aplikasi Anda, penting untuk memahami bagaimana Google Play mengevaluasi manifes aplikasi dan menetapkan set fitur yang diperlukan. Bagian berikut ini menyediakan informasi lebih banyak.

Pemfilteran berdasarkan fitur yang dideklarasikan secara eksplisit

Fitur yang dideklarasikan secara eksplisit adalah fitur yang dideklarasikan aplikasi Anda dalam elemen <uses-feature>. Deklarasi fitur bisa menyertakan atribut android:required=["true" | "false"] (jika Anda melakukan kompilasi terhadap API level 5 atau lebih tinggi), yang memungkinkan Anda untuk menentukan apakah aplikasi benar-benar membutuhkan fitur tersebut dan tidak dapat berfungsi dengan baik tanpanya ("true"), atau apakah aplikasi memilih untuk menggunakan fitur jika tersedia, namun dirancang untuk berjalan tanpa fitur itu ("false").

Google Play menangani fitur yang dideklarasikan secara eksplisit dengan cara ini:

  • Jika fitur dideklarasikan secara eksplisit sebagai diperlukan, Google Play menambahkan fitur ke dalam daftar fitur yang diperlukan untuk aplikasi. Itu kemudian memfilter aplikasi dari pengguna pada perangkat yang tidak menyediakan fitur tersebut. Misalnya:
    <uses-feature android:name="android.hardware.camera" android:required="true" />
  • Jika fitur dideklarasikan secara eksplisit sebagai tidak diperlukan, Google Play tidak akan menambahkan fitur ke dalam daftar fitur yang diperlukan untuk aplikasi. Karena alasan tersebut, fitur tidak-diperlukan yang dideklarasikan secara eksplisit tidak pernah dipertimbangkan ketika memfilter aplikasi. Bahkan jika perangkat tidak menyediakan fitur yang dideklarasikan, Google Play tetap akan mempertimbangkan aplikasi yang kompatibel dengan perangkat dan akan menunjukkannya ke pengguna, kecuali aturan pemfilteran lain diberlakukan. Misalnya :
    <uses-feature android:name="android.hardware.camera" android:required="false" />
  • Jika fitur secara eksplisit dideklarasikan, namun tanpa atribut android:required, Google Play akan berasumsi bahwa fitur tersebut diperlukan dan menyiapkan pemfilteran di dalamnya.

Secara umum, jika aplikasi Anda dirancang untuk berjalan pada versi Android 1.6 dan sebelumnya, atribut android:required tidak akan tersedia di API dan Google Play berasumsi bahwa setiap dan semua deklarasi <uses-feature> diperlukan.

Catatan: Dengan mendeklarasikan fitur secara eksplisit dan memasukkan atribut android:required="false", Anda bisa secara efektif menonaktifkan semua pemfilteran pada Google Play untuk fitur tertentu.

Pemfilteran berdasarkan fitur implisit

Sebuah fitur implisit adalah fitur yang diperlukan aplikasi untuk berfungsi dengan baik, namun tidak dideklarasikan dalam elemen <uses-feature> di file manifes. Tegasnya , setiap aplikasi harus selalu mendeklarasikan semua fitur yang digunakan atau diperlukan oleh aplikasi, sehingga ketiadaan deklarasi untuk fitur yang digunakan aplikasi harus dianggap sebagai kesalahan. Namun, sebagai perlindungan bagi pengguna dan developer, Google Play mencari fitur implisit dalam setiap aplikasi dan menyiapkan filter untuk fitur-fitur tersebut, seperti yang dilakukannya untuk fitur yang dideklarasikan secara eksplisit.

Aplikasi mungkin memerlukan suatu fitur namun tidak mendeklarasikannya karena:

  • Aplikasi ini dikompilasi terhadap pustaka Android versi lama (Android 1.5 atau sebelumnya) dan elemen <uses-feature> tidak tersedia.
  • Developer berasumsi salah bahwa fitur akan terdapat pada semua perangkat dan deklarasi tidak dibutuhkan.
  • Developer menghilangkan deklarasi fitur secara tidak sengaja.
  • Developer mendeklarasikan fitur secara eksplisit, namun deklarasi tersebut tidak valid. Misalnya, kesalahan ejaan dalam nama elemen <uses-feature> atau nilai string yang belum diakui untuk atribut android:name akan membatalkan deklarasi fitur.

Untuk menjelaskan hal di atas, Google Play mencoba untuk menemukan persyaratan fitur tersirat sebuah aplikasi dengan memeriksa elemen lain yang dideklarasikan pada file manifes, khususnya, elemen <uses-permission>.

Jika aplikasi meminta izin terkait perangkat keras, Google Play menganggap aplikasi itu menggunakan fitur perangkat keras pokok, sehingga memerlukan fitur tersebut, meskipun mungkin tidak terkait dengandeklarasi <uses-feature>. Untuk izin semacam ini, Google Play menambahkan fitur perangkat keras pokok ke metadata yang disimpannya untuk aplikasi dan menyiapkan filter bagi mereka.

Misalnya, jika aplikasi meminta izin CAMERA namun tidak mendeklarasikan elemen <uses-feature> untuk android.hardware.camera, Google Play menganggap aplikasi itu memerlukan kamera dan aplikasi tidak akan ditampilkan kepada pengguna yang perangkatnya tidak memiliki kamera.

Jika Anda tidak menginginkan Google Play memfilter berdasarkan fitur tersirat tertentu, Anda bisa menonaktifkan perilaku tersebut. Untuk melakukannya, deklarasikan fitur secara eksplisit dalam elemen <uses-feature> dan sertakan atribut android:required="false". Misalnya, untuk menonaktifkan pemfilteran yang diperoleh dari izin CAMERA, Anda harus mendeklarasikan fitur seperti yang ditunjukkan di bawah ini.

<uses-feature android:name="android.hardware.camera" android:required="false" />

Sangat penting untuk memahami bahwa izin yang Anda minta dalam elemen <uses-permission> bisa langsung memengaruhi cara Google Play memfilter aplikasi. Bagian referensi Izin yang Menunjukkan Persyaratan Fitur berisi daftar set lengkap izin yang menunjukkan persyaratan fitur sehingga memicu pemfilteran.

Penanganan khusus untuk fitur Bluetooth

Google Play menerapkan aturan yang sedikit berbeda dari yang dijelaskan di atas, ketika menentukan pemfilteran untuk Bluetooth.

Jika aplikasi mendeklarasikan izin Bluetooth dalam elemen <uses-permission>, tapi tidak secara eksplisit mendeklarasikan fitur Bluetooth dalam elemen <uses-feature>, Google Play akan memeriksa versi platform Android, tempat aplikasi ini dirancang untuk dijalankan, sebagaimana diatur dalam elemen <uses-sdk>.

Seperti yang ditunjukkan pada tabel di bawah, Google Play mengaktifkan pemfilteran untuk fitur Bluetooth hanya jika aplikasi mendeklarasikan platform terendah atau platform yang ditargetkan seperti Android 2.0 (API level 5) atau yang lebih tinggi. Namun, perhatikan bahwa Google Play menerapkan aturan normal pemfilteran bila aplikasi secara eksplisit mendeklarasikan fitur Bluetooth dalam elemen <uses-feature>.

Tabel 1. Bagaimana Google Play menentukan persyaratan fitur Bluetooth untuk aplikasi yang meminta izin Bluetooth namun tidak mendeklarasikan fitur Bluetooth dalam elemen <uses-feature>.

Jika minSdkVersion adalah ... atau targetSdkVersion adalah Hasil
<=4 (atau uses-sdk tidak dideklarasikan) <=4 Google Play tidak akan memfilter aplikasi dari setiap perangkat berdasarkan dukungan yang dilaporkannya untuk fitur android.hardware.bluetooth .
<=4 >=5 Google Play memfilter aplikasi dari setiap perangkat yang tidak mendukung fitur android.hardware.bluetooth (termasuk rilis sebelumnya).
>=5 >=5

Contoh di bawah ini menunjukkan efek pemfilteran yang berbeda, berdasarkan cara Google Play menangani fitur Bluetooth.

Dalam contoh pertama, sebuah aplikasi yang dirancang untuk berjalan pada API level lawas mendeklarasikan izin Bluetooth, namun tidak mendeklarasikan fitur Bluetooth dalam elemen <uses-feature>.
Hasilnya: Google Play tidak memfilter aplikasi dari perangkat apa pun.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" />
    ...
</manifest>
Dalam contoh kedua, di bawah, aplikasi yang sama juga mendeklarasikan target API level "5".
Hasilnya: Google Play sekarang beranggapan bahwa fitur tersebut diperlukan dan akan memfilter aplikasi dari semua perangkat yang tidak melaporkan dukungan Bluetooth, termasuk perangkat yang menjalankan versi platform lawas.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
Berikutnya, aplikasi yang sama sekarang secara khusus mendeklarasikan fitur Bluetooth.
Hasilnya: Serupa dengan contoh sebelumnya (pemfilteran diterapkan).
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
Yang terakhir, dalam kasus di bawah ini, aplikasi yang sama menambahkan atribut android:required="false".
Hasilnya: Google Play menonaktifkan pemfilteran berdasarkan dukungan fitur Bluetooth, untuk semua perangkat.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" android:required="false" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>

Menguji fitur yang diperlukan oleh aplikasi Anda

Anda bisa menggunakan alat aapt, termasuk dalam Android SDK, untuk menentukan cara Google Play memfilter aplikasi Anda, berdasarkan fitur dan izin yang dideklarasikannya. Untuk melakukannya, jalankan aapt dengan perintah dump badging. Hal ini menyebabkan aapt melakukan parse manifes aplikasi Anda dan menerapkan aturan sama seperti yang digunakan oleh Google Play untuk menentukan fitur yang dibutuhkan aplikasi.

Untuk menggunakan alat ini, ikuti langkah-langkah berikut:

  1. Pertama, bangun dan ekspor aplikasi sebagai belum ditandatangani .apk. Jika Anda mengembangkan pada Android Studio, bangun aplikasi Anda dengan Gradle:
    1. Buka proyek dan pilih Run > Edit Configurations.
    2. Pilih tanda plus di dekat sudut kiri atas jendela Run/Debug Configurations.
    3. Pilih Gradle.
    4. Masukkan Unsigned APK dalam Name.
    5. Pilih modul Anda dari bagian Gradle project
    6. Masukkan assemble dalam Tasks.
    7. Pilih OK untuk menyelesaikan konfigurasi baru.
    8. Pastikan Unsigned APK menjalankan konfigurasi yang dipilih pada bilah alat dan pilih Run > Run 'Unsigned APK'.
    Anda bisa menemukan .apk yang belum ditandatangani dalam direktori <ProjectName>/app/build/outputs/apk/.
  2. Berikutnya, cari alat aapt, jika belum terdapat dalam JALUR. Jika Anda menggunakan SDK Tools r8 atau yang lebih tinggi, Anda bisa menemukan aapt dalam direktori <SDK>/platform-tools/.

    Catatan: Anda harus menggunakan versi aapt yang disediakan untuk komponen Platform-Tools terbaru. Jika Anda belum memiliki komponen Platform-Tools terbaru, unduh menggunakan Android SDK Manager.

  3. Jalankan aapt menggunakan sintaks ini:
$ aapt dump badging <path_to_exported_.apk>

Berikut ini adalah contoh keluaran perintah untuk contoh Bluetooth kedua, di atas:

$ ./aapt dump badging BTExample.apk
package: name='com.example.android.btexample' versionCode='' versionName=''
uses-permission:'android.permission.BLUETOOTH_ADMIN'
uses-feature:'android.hardware.bluetooth'
sdkVersion:'3'
targetSdkVersion:'5'
application: label='BT Example' icon='res/drawable/app_bt_ex.png'
launchable activity name='com.example.android.btexample.MyActivity'label='' icon=''
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'small' 'normal' 'large'
locales: '--_--'
densities: '160'

Referensi Fitur

Bagian berikut ini menyediakan informasi referensi tentang fitur perangkat keras, fitur perangkat lunak, dan set izin yang menunjukkan persyaratan fitur tertentu.

Fitur perangkat keras

Bagian ini menampilkan fitur perangkat keras yang didukung oleh sebagian besar rilis platform terbaru. Untuk menunjukkan bahwa aplikasi Anda menggunakan atau memerlukan fitur perangkat keras, deklarasikan nilai yang sesuai (diawali dengan "android.hardware") dalam atribut android:name. Setiap kali Anda mendeklarasikan fitur perangkat keras, gunakan elemen <uses-feature> yang terpisah.

Fitur perangkat keras audio

android.hardware.audio.low_latency
Aplikasi ini menggunakan saluran audio latensi-rendah dari perangkat, yang mengurangi lag dan menunda saat memproses masukan atau keluaran suara.
android.hardware.audio.output
Aplikasi ini mentransmisikan suara menggunakan speaker, colokan audio, kemampuan streaming Bluetooth, atau mekanisme yang sama dari perangkat.
android.hardware.audio.pro
Aplikasi ini menggunakan fungsionalitas audio dan kemampuan kinerja kelas-atas dari perangkat.
android.hardware.microphone
Aplikasi merekam audio menggunakan mikrofon perangkat.

Fitur perangkat keras Bluetooth

android.hardware.bluetooth
Aplikasi menggunakan fitur Bluetooth perangkat, biasanya untuk berkomunikasi dengan perangkat Bluetooth-aktif lainnya.
android.hardware.bluetooth_le
Aplikasi menggunakan fitur radio Bluetooth Low Energy perangkat.

Fitur perangkat keras Kamera

android.hardware.camera
Aplikasi menggunakan kamera belakang perangkat. Perangkat yang dilengkapi hanya kamera depan tidak mencantumkan fitur ini, jadi gunakan fitur android.hardware.camera.any sebagai ganti jika aplikasi Anda bisa berkomunikasi dengan kamera mana pun, tidak peduli arah hadap kamera.
android.hardware.camera.any
Aplikasi ini menggunakan salah satu kamera perangkat, atau kamera eksternal yang dihubungkan pengguna ke perangkat. Gunakan nilai ini bukannya android.hardware.camera jika aplikasi Anda tidak memerlukan kamera belakang.
android.hardware.camera.autofocus

Aplikasi ini menggunakan fitur autofocus yang didukung kamera perangkat.

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.camera, kecuali fitur induk ini dideklarasikan dengan android:required="false".

android.hardware.camera.capability.manual_post_processing

Aplikasi menggunakan fitur MANUAL_POST_PROCESSING yang didukung kamera perangkat.

Fitur ini mengizinkan aplikasi untuk mengganti fungsionalitas keseimbangan putih otomatis pada kamera. Gunakan android.colorCorrection.transform, android.colorCorrection.gains, dan sebuah android.colorCorrection.mode dari TRANSFORM_MATRIX.

android.hardware.camera.capability.manual_sensor

Aplikasi menggunakan fitur MANUAL_SENSOR yang didukung kamera perangkat.

Fitur ini menunjukkan dukungan untuk mengunci auto-exposure (android.control.aeLock), yang memungkinkan waktu dan sensitivitas pencahayaan kamera selalu tetap pada nilai tertentu.

android.hardware.camera.capability.raw

Aplikasi menggunakan fitur RAW yang didukung kamera perangkat.

Fitur ini menegaskan bahwa perangkat bisa menyimpan file DNG (mentah) dan bahwa perangkat kamera menyediakan metadata terkait DNG yang diperlukan bagi aplikasi Anda untuk memproses gambar raw secara langsung.

android.hardware.camera.external
Aplikasi ini berkomunikasi dengan kamera eksternal yang dihubungkan pengguna ke perangkat. Namun, fitur ini tidak menjamin, bahwa kamera eksternal bisa digunakan oleh aplikasi Anda.
android.hardware.camera.flash

Aplikasi menggunakan fitur lampu kilat yang didukung kamera perangkat.

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.camera, kecuali fitur induk ini dideklarasikan dengan android:required="false".

android.hardware.camera.front

Aplikasi menggunakan kamera depan perangkat.

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.camera, kecuali fitur induk ini dideklarasikan dengan android:required="false".

android.hardware.camera.level.full
Aplikasi menggunakan dukungan FULL-level image-capturing yang disediakan oleh setidaknya satu dari kamera perangkat. Kamera dengan dukungan FULL menyediakan kemampuan jepretan beruntun, kontrol per-bingkai, dan kontrol pascapemrosesan manual.

Fitur perangkat keras UI perangkat

android.hardware.type.automotive

Aplikasi ini dirancang untuk menampilkan UI pada set layar di dalam kendaraan. Pengguna berinteraksi dengan aplikasi menggunakan tombol, layar sentuh, pengendali putar, dan antarmuka seperti-mouse. Layar pada kendaraan biasanya berada di konsol tengah atau gugus instrumen kendaraan. Layar ini biasanya memiliki ukuran dan resolusi yang terbatas.

Catatan: Harus diingat bahwa, karena pengguna sedang mengemudi saat menggunakan tipe UI aplikasi ini, aplikasi harus meminimalkan gangguan bagi pengemudi.

android.hardware.type.television

(Tidak digunakan lagi; gunakan android.software.leanback sebagai gantinya.)

Aplikasi ini dirancang untuk menampilkan UI pada televisi. Fitur ini mendefinisikan "televisi" sebagai pengalaman televisi khas untuk ruang tamu: ditampilkan pada layar TV, dengan pengguna duduk jauh dari layar dan format masukan yang banyak dipakai adalah sesuatu seperti d-pad, dan biasanya tidak menggunakan mouse, pointer, atau perangkat sentuh.

android.hardware.type.watch
Aplikasi ini dirancang untuk menampilkan UI pada jam. Jam dipakai pada badan, seperti di pergelangan tangan. Pengguna berada sangat dekat dengan perangkat saat berinteraksi dengannya.

Fitur perangkat keras sidik jari

android.hardware.fingerprint
Aplikasi ini membaca sidik jari menggunakan perangkat keras biometrik perangkat.

Fitur perangkat keras Gamepad

android.hardware.gamepad
Aplikasi ini menangkap masukan pengontrol game, baik dari perangkat itu sendiri atau gamepad yang terhubung.

Fitur perangkat keras inframerah

android.hardware.consumerir
Aplikasi ini menggunakan kemampuan inframerah (IR) perangkat, biasanya untuk berkomunikasi dengan perangkat IR pengguna yang lain.

Fitur perangkat keras lokasi

android.hardware.location
Aplikasi ini menggunakan satu atau beberapa fitur pada perangkat untuk menentukan lokasi, seperti lokasi GPS, lokasi jaringan, atau lokasi seluler.
android.hardware.location.gps

Aplikasi ini menggunakan koordinat lokasi akurat yang diperoleh dari penerima Sistem Pemosisi Global (GlobalPositioning System-GPS) pada perangkat.

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.location, kecuali fitur induk ini dideklarasikan dengan atribut android:required="false".

android.hardware.location.network

Aplikasi menggunakan koordinat lokasi sementara yang diperoleh dari sistem geolokasi berbasis jaringan yang didukung pada perangkat.

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.location, kecuali fitur induk ini dideklarasikan dengan atribut android:required="false".

Fitur perangkat keras NFC

android.hardware.nfc
Aplikasi menggunakan fitur radio Near-Field Communication (NFC) perangkat.
android.hardware.nfc.hce

(Tidak digunakan lagi.)

Aplikasi menggunakan emulasi kartu NFC yang di-host pada perangkat.

Fitur perangkat keras OpenGL ES

android.hardware.opengles.aep
Aplikasi menggunakan OpenGL ES Android Extension Packyang dipasang pada perangkat.

Fitur perangkat keras Sensor

android.hardware.sensor.accelerometer
Aplikasi ini menggunakan pembacaan gerak akselerometer perangkat untuk mendeteksi orientasi perangkat saat ini. Misalnya, sebuah aplikasi bisa menggunakan pembacaan akselerometer untuk menentukan kapan beralih antara orientasi potret dan lanskap.
android.hardware.sensor.ambient_temperature
Aplikasi ini menggunakan sensor suhu ambien (lingkungan) sekitar perangkat. Misalnya, sebuah aplikasi cuaca bisa melaporkan suhu ruangan atau di luar ruangan.
android.hardware.sensor.barometer
Aplikasi menggunakan barometer perangkat. Misalnya, aplikasi cuaca bisa melaporkan tekanan udara.
android.hardware.sensor.compass
Aplikasi menggunakan magnetometer (kompas) perangkat. Misalnya, aplikasi navigasi bisa menunjukkan arah hadap pengguna.
android.hardware.sensor.gyroscope
Aplikasi menggunakan giroskop perangkat untuk mendeteksi rotasi dan putaran, membuat sistem orientasi enam-sumbu. Dengan menggunakan sensor ini, aplikasi bisa mendeteksi secara lebih halus bila perlu beralih antara orientasi potret dan lanskap.
android.hardware.sensor.hifi_sensors
Aplikasi menggunakan sensor high fidelity (Hi-Fi) perangkat. Misalnya, sebuah aplikasi game bisa mendeteksi gerakan presisi-tinggi dari pengguna.
android.hardware.sensor.heartrate
Aplikasi menggunakan pemantau denyut jantung dari perangkat. Misalnya, aplikasi kebugaran bisa melaporkan kecenderungan denyut jantung pengguna dari waktu ke waktu.
android.hardware.sensor.heartrate.ecg
Aplikasi menggunakan sensor denyut jantung elektrokardiogram (ECG) perangkat. Misalnya, aplikasi kebugaran bisa melaporkan informasi lebih terperinci mengenai denyut jantung pengguna.
android.hardware.sensor.light
Aplikasi menggunakan sensor cahaya perangkat. Misalnya, sebuah aplikasi bisa menampilkan satu dari dua skema warna yang berbeda berdasarkan kondisi pencahayaan di sekitarnya.
android.hardware.sensor.proximity
Aplikasi menggunakan sensor kedekatan perangkat. Misalnya, aplikasi telepon bisa mematikan layar perangkat saat aplikasi mendeteksi bahwa pengguna memegang perangkat dekat ke badan mereka.
android.hardware.sensor.relative_humidity
Aplikasi menggunakan sensor kelembapan relatif perangkat. Misalnya, aplikasi cuaca bisa menggunakan kelembapan untuk menghitung dan melaporkan titik embun saat ini.
android.hardware.sensor.stepcounter
Aplikasi menggunakan penghitung langkah perangkat. Misalnya, aplikasi kebugaran bisa melaporkan jumlah langkah yang dibutuhkan pengguna untuk mencapai sasaran jumlah langkah harian mereka.
android.hardware.sensor.stepdetector
Aplikasi menggunakan detektor langkah perangkat. Misalnya, aplikasi kebugaran bisa menggunakan interval waktu antar langkah untuk menyimpulkan jenis olahraga yang dilakukan pengguna.

Fitur perangkat keras layar

android.hardware.screen.landscape
android.hardware.screen.portrait

Aplikasi mengharuskan perangkat untuk menggunakan orientasi potret atau lanskap. Jika aplikasi mendukung kedua orientasi, maka Anda tidak perlu mendeklarasikan tiap-tiap fitur.

Misalnya, jika aplikasi Anda memerlukan orientasi potret, Anda harus mendeklarasikan fitur berikut sehingga hanya perangkat yang mendukung orientasi potret (selalu atau dengan pilihan pengguna) yang bisa menjalankan aplikasi Anda:

<uses-feature android:name="android.hardware.screen.portrait" />

Kedua orientasi dianggap tidak diperlukan secara default, sehingga aplikasi bisa dipasang pada perangkat yang mendukung salah satu atau kedua orientasi. Namun, jika ada aktivitas yang meminta agar mereka berjalan dalam orientasi tertentu, menggunakan atribut android:screenOrientation, maka deklarasi ini menegaskan bahwa aplikasi Anda membutuhkan orientasi tersebut. Misalnya, jika Anda mendeklarasikan android:screenOrientation dengan "landscape", "reverseLandscape", atau "sensorLandscape", maka aplikasi Anda hanya akan tersedia pada perangkat yang mendukung orientasi lanskap.

Sebagai praktik terbaik, Anda harus tetap mendeklarasikan persyaratan Anda untuk orientasi ini menggunakan elemen <uses-feature>. Jika Anda mendeklarasikan sebuah orientasi untuk aktivitas Anda menggunakan android:screenOrientation, namun tidak benar-benar membutuhkannya, Anda bisa menonaktifkan persyaratan tersebut dengan mendeklarasikan orientasi bersama elemen <uses-feature> dan memasukkan android:required="false".

Untuk kompatibilitas mundur, perangkat yang menjalankan Android 3.1 (API level 12) atau yang lebih rendah mendukung orientasi lanskap dan potret.

Fitur perangkat keras telepon

android.hardware.telephony
Aplikasi menggunakan fitur telepon perangkat, seperti radio telepon dengan layanan komunikasi data.
android.hardware.telephony.cdma

Aplikasi menggunakan sistem radio telepon Code Division Multiple Access (CDMA).

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.telephony, kecuali fitur induk ini dideklarasikan dengan android:required="false".

android.hardware.telephony.gsm

Aplikasi ini menggunakan sistem radio telepon Global System for Mobile Communications (GSM).

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.telephony, kecuali fitur induk ini dideklarasikan dengan android:required="false".

Fitur perangkat keras layar sentuh

android.hardware.faketouch

Aplikasi menggunakan kejadian interaksi sentuh dasar, seperti ketuk dan seret.

Ketika dideklarasikan sebagai dibutuhkan, fitur ini menunjukkan bahwa aplikasi tersebut kompatibel dengan perangkat hanya jika perangkat mengemulasi layar sentuh (antarmuka "sentuh tiruan") atau memiliki layar sentuh fisik.

Sebuah perangkat yang menawarkan antarmuka sentuh tiruan menyediakan sistem masukan pengguna yang mengemulasi subset dari kemampuan layar sentuh ini. Misalnya, mouse atau kontrol jarak jauh bisa menggerakkan kursor pada layar. Jika aplikasi Anda membutuhkan interaksi tunjuk dan klik dasar (dengan kata lain, itu tidak akan bekerja hanya dengan pengontrol d-pad), Anda harus mendeklarasikan fitur ini. Karena ini adalah tingkat minimum interaksi sentuh, Anda juga bisa menggunakan sebuah aplikasi yang mendeklarasikan fitur ini pada perangkat yang menawarkan antarmuka sentuh lebih kompleks.

Catatan: Aplikasi memerlukan fitur android.hardware.touchscreen secara default. Jika menginginkan agar aplikasi Anda juga tersedia untuk perangkat yang menyediakan antarmuka sentuh tiruan, Anda harus mendeklarasikan secara eksplisit bahwa layar sentuh tidak diperlukan, seperti berikut:

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
android.hardware.faketouch.multitouch.distinct

Aplikasi ini melacak dua atau beberapa "jari" yang berbeda pada antarmuka sentuh tiruan. Ini adalah superset dari fitur android.hardware.faketouch. Ketika dideklarasikan sebagai dibutuhkan, fitur ini menunjukkan bahwa aplikasi tersebut kompatibel dengan perangkat hanya jika perangkat mengemulasi pelacakan dari dua atau beberapa jari yang berbeda atau memiliki layar sentuh fisik.

Berbeda dengan multitouch distinct yang didefinisikan oleh android.hardware.touchscreen.multitouch.distinct, perangkat masukan yang mendukung multitouch distinct dengan antarmuka sentuh tiruan tidak mendukung semua isyarat dua-jari karena masukan diubah ke gerakan kursor pada layar. Artinya, isyarat satu-jari pada perangkat bisa memindahkan kursor, gesek dua-jari menyebabkan kejadian sentuh satu-jari terjadi, dan isyarat dua-jari lainnya memicu kejadian sentuh dua-jari yang sesuai.

Perangkat yang menyediakan trackpad sentuh dua-jari untuk pergerakan kursor bisa mendukung fitur ini.

android.hardware.faketouch.multitouch.jazzhand

Aplikasi ini melacak lima atau lebih "jari" yang berbeda pada antarmuka sentuh tiruan. Ini adalah superset dari fitur android.hardware.faketouch. Bila dideklarasikan sebagai diperlukan, fitur ini menunjukkan bahwa aplikasi kompatibel dengan perangkat hanya jika perangkat mengemulasi pelacakan lima atau lebih jari yang berbeda atau memiliki layar sentuh fisik.

Berbeda dengan multitouch distinct yang didefinisikan oleh android.hardware.touchscreen.multitouch.jazzhand, perangkat masukan yang mendukung multitouch jazzhand dengan antarmuka sentuh tiruan tidak mendukung semua isyarat lima-jari karena masukan diubah ke gerakan kursor pada layar. Artinya, isyarat satu-jari pada perangkat bisa memindahkan kursor, isyarat lima-jari menyebabkan kejadian sentuh satu-jari terjadi, dan isyarat multi-jari lainnya memicu kejadian sentuh multi-jari yang sesuai.

Perangkat yang menyediakan trackpad sentuh lima-jari untuk pergerakan kursor bisa mendukung fitur ini.

android.hardware.touchscreen

Aplikasi ini menggunakan kemampuan layar sentuh perangkat untuk isyarat yang lebih interaktif daripada kejadian sentuh dasar, seperti fling. Ini adalah superset dari fitur android.hardware.faketouch.

Secara default, aplikasi Anda membutuhkan fitur ini. Oleh karena itu, aplikasi Anda tidak tersedia untuk perangkat yang hanya menyediakan emulasi antarmuka sentuh ("sentuh tiruan") secara default. Jika Anda menginginkan agar aplikasi tersedia pada perangkat yang menyediakan antarmuka sentuh tiruan (atau bahkan pada perangkat yang hanya menyediakan pengontrol d-pad), Anda harus mendeklarasikan secara eksplisit bahwa layar sentuh tidak diperlukan dengan mendeklarasikan android.hardware.touchscreen bersama android:required="false". Anda harus menambahkan deklarasi ini jika aplikasi Anda menggunakan layar sentuh—namun tidak memerlukan—antarmuka layar sentuh fisik.

Jika aplikasi Anda sebenarnya memerlukan antarmuka sentuh (untuk melakukan isyarat sentuh lanjutan seperti fling), maka Anda tidak perlu mendeklarasikan semua fitur antarmuka sentuh karena pada dasarnya mereka dibutuhkan secara default. Namun, akan sangat baik jika Anda secara eksplisit mendeklarasikan semua fitur yang digunakan aplikasi.

Jika Anda memerlukan interaksi sentuh yang lebih kompleks, seperti isyarat multi-jari, Anda harus mendeklarasikan bahwa aplikasi Anda menggunakan fitur layar sentuh lanjutan.

android.hardware.touchscreen.multitouch

Aplikasi ini menggunakan kemampuan multisentuh dua-titik dasar dari perangkat, seperti untuk isyarat cubit, namun aplikasi tidak perlu melacak isyarat sentuh secara independen. Ini adalah superset dari fitur android.hardware.touchscreen.

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.touchscreen, kecuali fitur induk ini dideklarasikan dengan android:required="false".

android.hardware.touchscreen.multitouch.distinct

Aplikasi menggunakan kemampuan multisentuh canggih perangkat untuk melacak dua titik atau lebih secara independen. Fitur ini adalah superset dari fitur android.hardware.touchscreen.multitouch.

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.touchscreen.multitouch, kecuali jika fitur induk ini dideklarasikan dengan android:required="false".

android.hardware.touchscreen.multitouch.jazzhand

Aplikasi menggunakan kemampuan multisentuh canggih perangkat untuk melacak lima titik atau lebih secara independen. Fitur ini adalah superset dari fitur android.hardware.touchscreen.multitouch.

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.hardware.touchscreen.multitouch, kecuali jika fitur induk ini dideklarasikan dengan android:required="false".

Fitur perangkat keras USB

android.hardware.usb.accessory
Aplikasi ini berperilaku sebagai perangkat USB dan terhubung ke host USB.
android.hardware.usb.host
Aplikasi menggunakan aksesori USB yang terhubung ke perangkat. Perangkat berfungsi sebagai host USB.

Fitur perangkat keras Wi-Fi

android.hardware.wifi
Aplikasi menggunakan fitur jaringan 802.11 (Wi-Fi) pada perangkat.
android.hardware.wifi.direct
Aplikasi menggunakan fitur jaringan Wi-Fi Direct pada perangkat.

Fitur perangkat lunak

Bagian ini menampilkan fitur perangkat lunak yang didukung oleh sebagian besar rilis platform terbaru. Untuk menunjukkan bahwa aplikasi Anda menggunakan atau memerlukan fitur perangkat lunak, deklarasikan nilai yang sesuai (diawali dengan "android.software") dalam atribut android:name. Setiap kali Anda mendeklarasikan fitur perangkat lunak, gunakan elemen <uses-feature> yang terpisah.

Fitur perangkat lunak komunikasi

android.software.sip
Aplikasi menggunakan layanan Session Initiation Protocol (SIP). Dengan menggunakan SIP, aplikasi bisa mendukung operasi telepon internet, seperti konferensi video dan perpesanan instan.
android.software.sip.voip

Aplikasi menggunakan layanan Voice Over Internet Protocol (VoIP) berbasis-SIP. Dengan menggunakan VoIP, aplikasi bisa mendukung operasi telepon internet real-time, seperti konferensi video dua arah.

Dengan menggunakan fitur ini, aplikasi menegaskan bahwa itu juga menggunakan fitur android.software.sip, kecuali jika fitur induk dideklarasikan dengan android:required="false".

android.software.webview
Aplikasi menampilkan materi dari internet.

Fitur perangkat lunak masukan khusus

android.software.input_methods
Aplikasi menggunakan metode masukan baru, yang ditetapkan developer dalam InputMethodService.

Fitur perangkat lunak manajemen perangkat

android.software.backup
Aplikasi ini meliputi logika untuk menangani operasi pencadangan dan pemulihan.
android.software.device_admin
Aplikasi menggunakan administrator perangkat untuk memberlakukan kebijakan perangkat.
android.software.managed_users
Aplikasi mendukung pengguna tambahan dan profil terkelola.
android.software.securely_removes_users
Aplikasi bisa secara permanen membuang pengguna dan data terkait.
android.software.verified_boot
Aplikasi ini mencakup logika untuk menangani hasil dari fitur booting yang diverifikasi perangkat, yang mendeteksi apakah konfigurasi perangkat berubah selama operasi mulai ulang.

Fitur perangkat lunak media

android.software.midi
Aplikasi terhubung dengan instrumen musik atau keluaran suara menggunakan protokol Musical Instrument Digital Interface (MIDI).
android.software.print
Aplikasi memuat perintah untuk mencetak dokumen yang ditampilkan pada perangkat.
android.software.leanback
Aplikasi menampilkan UI yang dirancang untuk dilihat pada layar besar, seperti televisi.
android.software.live_tv
Aplikasi melakukan streaming langsung acara televisi.

Fitur perangkat lunak antarmuka layar

android.software.app_widgets
Aplikasi menggunakan atau menyediakan Widget Aplikasi dan hanya boleh dipasang pada perangkat yang memuat layar Utama atau lokasi serupa tempat pengguna bisa menyematkan Widget Aplikasi.
android.software.home_screen
Aplikasi berperilaku sebagai pengganti untuk layar Utama perangkat.
android.software.live_wallpaper
Aplikasi ini menggunakan atau menyediakan wallpaper yang memuat animasi.

Izin yang Menunjukkan Persyaratan Fitur

Beberapa konstanta fitur perangkat keras dan perangkat lunak disediakan untuk aplikasi setelah API yang berkaitan; misalnya, fitur android.hardware.bluetooth ditambahkan dalam Android 2.2 API level 8), namun Bluetooth API yang diacunya ditambahkan dalam Android 2.0 (API level 5). Karena itu, beberapa aplikasi bisa menggunakan API sebelum aplikasi memiliki kemampuan untuk mendeklarasikan bahwa mereka memerlukan API menggunakan sistem <uses-feature>.

Untuk mencegah aplikasi tersebut sehingga bisa tersedia tanpa sengaja, Google Play berasumsi bahwa izin terkait perangkat keras tertentu menunjukkan bahwa fitur perangkat keras yang mendasarinya secara default sangat diperlukan. Misalnya, aplikasi yang menggunakan Bluetooth harus meminta izin BLUETOOTH dalam elemen <uses-permission> — untuk aplikasi lawas, Google Play berasumsi bahwa deklarasi izin berarti bahwa fitur android.hardware.bluetooth pokok diperlukan oleh aplikasi dan menyiapkan pemfilteran berdasarkan fitur tersebut. Tabel 2 mencantumkan izin yang menunjukkan persyaratan fitur yang sama dengan yang dideklarasikan dalam elemen <uses-feature>.

Perhatikan bahwa deklarasi <uses-feature>, termasuk setiap atribut android:required yang dideklarasikan, selalu lebih diprioritaskan daripada fitur yang ditegaskan oleh izin pada tabel 2. Untuk setiap izin ini, Anda bisa menonaktifkan pemfilteran berdasarkan fitur yang ditegaskan, dengan secara eksplisit mendeklarasikan fitur yang ditegaskan, dalam elemen <uses-feature>, dengan atribut android:required="false". Misalnya, untuk menonaktifkan semua pemfilteran berdasarkan izin CAMERA, Anda harus menambahkan deklarasi <uses-feature> ke file manifes:

<uses-feature android:name="android.hardware.camera" android:required="false" />

Tabel 2. Izin perangkat yang menegaskan penggunaan perangkat keras.

Kategori Izin ini... ...Menegaskan Persyaratan Fitur Ini
Bluetooth BLUETOOTH android.hardware.bluetooth

(Lihat Penanganan khusus untuk fitur Bluetooth untuk detailnya.)

BLUETOOTH_ADMIN android.hardware.bluetooth
Kamera CAMERA android.hardware.camera dan
android.hardware.camera.autofocus
Lokasi ACCESS_MOCK_LOCATION android.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDS android.hardware.location
INSTALL_LOCATION_PROVIDER android.hardware.location
ACCESS_COARSE_LOCATION android.hardware.location.network dan
android.hardware.location
ACCESS_FINE_LOCATION android.hardware.location.gps dan
android.hardware.location
Mikrofon RECORD_AUDIO android.hardware.microphone
Telepon CALL_PHONE android.hardware.telephony
CALL_PRIVILEGED android.hardware.telephony
MODIFY_PHONE_STATE android.hardware.telephony
PROCESS_OUTGOING_CALLS android.hardware.telephony
READ_SMS android.hardware.telephony
RECEIVE_SMS android.hardware.telephony
RECEIVE_MMS android.hardware.telephony
RECEIVE_WAP_PUSH android.hardware.telephony
SEND_SMS android.hardware.telephony
WRITE_APN_SETTINGS android.hardware.telephony
WRITE_SMS android.hardware.telephony
Wi-Fi ACCESS_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_MULTICAST_STATE android.hardware.wifi