Setiap kali saya mencoba menghubungkan Samsung Galaxy S6 saya dengan Android 6.0.1 ke perangkat berkemampuan Bluetooth, ia memberi tahu saya untuk mengaktifkan "layanan lokasi".
Ketika saya mengeluh tentang hal ini, vendor perangkat lunak menjawab: "Pembaruan terbaru untuk Google Android API yang memengaruhi teknologi Bluetooth LE memerlukan izin lokasi untuk diberikan agar dapat menggunakan aplikasi."
Saya gagal melihat kebutuhan untuk ini.
Diskusi ini membicarakan hal ini. The referensi teknis mengatakan aplikasi harus memiliki tertentu izin , tidak layanan lokasi aktif.
Untuk mengakses pengidentifikasi perangkat keras dari perangkat eksternal terdekat melalui pemindaian Bluetooth dan Wi-Fi, aplikasi Anda sekarang harus memiliki izin ACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION
Pertanyaan : Apakah ini berarti pernyataan vendor perangkat lunak salah?
sumber
Jawaban:
Pemahaman saya tentang Bluetooth adalah bahwa aplikasi yang menggunakan Bluetooth memiliki akses langsung ke alamat MAC perangkat untuk tujuan pemasangan. Saya akan menganggap ini untuk jawaban ini.
Jika Anda dapat membaca alamat MAC pemancar WiFi atau Bluetooth, Anda dapat menemukan perangkat. Inilah cara kerja lokasi WiFi / Bluetooth; Anda mendengarkan alamat pemancar MAC dan mencari ini di basis data global raksasa.
Karena itu, aplikasi apa pun yang menggunakan Bluetooth dan koneksi data secara teoritis mampu menemukan perangkat Anda. Saya tidak yakin ini praktis mungkin; Bluetooth tidak memiliki jangkauan dan infrastruktur titik akses semi permanen yang sama dengan WiFi.
Dengan meminta layanan lokasi untuk mengakses Bluetooth, Anda memastikan bahwa pengguna memahami informasi lokasi mereka dapat bocor ketika mereka menggunakan Bluetooth. Dalam versi Android sebelum Marshmallow, pengguna dapat menggunakan Bluetooth tanpa layanan lokasi diaktifkan, tetapi informasi lokasi bisa bocor. Dalam versi yang lebih lama ini, Anda juga dapat menjalankan pemindaian WiFi untuk menemukan alamat MAC tanpa layanan lokasi yang diaktifkan, yang lagi-lagi berarti bahwa informasi lokasi Anda dapat bocor. Persyaratan untuk mengizinkan layanan lokasi menggunakan Bluetooth adalah tentang memastikan bahwa seseorang yang menonaktifkan lokasi menjaga kerahasiaan lokasi mereka.
Saya akan mencirikan masalah ini sebagai masalah desain dan bukan bug. Bug mungkin dapat diperbaiki, tetapi tidak jelas bagi saya Anda dapat menggunakan Bluetooth sama sekali tanpa berpotensi membocorkan informasi lokasi. Bluetooth dibuat sebelum orang mempertimbangkan layanan WiFi dan lokasi Bluetooth.
sumber
Vendornya benar, Anda harus mengaktifkan layanan lokasi untuk memindai perangkat WiFi atau Bluetooth LE.
Lihat bug # 185370 untuk detailnya. Google mengatakan mereka telah memperbaikinya dalam 'rilis masa depan' tetapi menurut komentar pada bug, itu masih belum diperbaiki di Android 7.
Sunting: Saya sebelumnya mengatakan layanan lokasi hanya diperlukan ketika Aplikasi memulai pemindaian berjalan di latar belakang. Kode sumber menunjukkan ini hanya benar jika API-Target adalah <Android M.
sumber