Potongan kode yang bagus. Saya menghapus @SuppressWarnings dan tidak menerima peringatan apa pun ... mungkin tidak perlu?
rentang
30
Saya akan menyarankan alertuntuk mendeklarasikan seluruh aktivitas sehingga Anda dapat mengabaikannya di onDestroy untuk menghindari kebocoran memori ( if(alert != null) { alert.dismiss(); })
Cameron
Jadi bagaimana jika saya sedang Menghemat Baterai, apakah ini masih berfungsi?
Prakhar Mohan Srivastava
3
@PrakharMohanSrivastava jika pengaturan lokasi Anda menggunakan Penghematan Daya, ini akan mengembalikan false, namun LocationManager.NETWORK_PROVIDERakan mengembalikan true
Tim
129
Di android, kita dapat dengan mudah memeriksa apakah GPS diaktifkan di perangkat atau tidak menggunakan LocationManager.
Berikut adalah program sederhana untuk Memeriksa.
GPS Diaktifkan atau Tidak: - Tambahkan baris izin pengguna di bawah ini di AndroidManifest.xml ke Access Location
publicclassExampleAppextendsActivity{/** Called when the activity is first created. */protectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.main);LocationManager locationManager =(LocationManager) getSystemService(LOCATION_SERVICE);if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){Toast.makeText(this,"GPS is Enabled in your devide",Toast.LENGTH_SHORT).show();}else{
showGPSDisabledAlertToUser();}}privatevoid showGPSDisabledAlertToUser(){AlertDialog.Builder alertDialogBuilder =newAlertDialog.Builder(this);
alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?").setCancelable(false).setPositiveButton("Goto Settings Page To Enable GPS",newDialogInterface.OnClickListener(){publicvoid onClick(DialogInterface dialog,int id){Intent callGPSSettingIntent =newIntent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(callGPSSettingIntent);}});
alertDialogBuilder.setNegativeButton("Cancel",newDialogInterface.OnClickListener(){publicvoid onClick(DialogInterface dialog,int id){
dialog.cancel();}});AlertDialog alert = alertDialogBuilder.create();
alert.show();}}
Tidak ada yang terjadi ketika saya mencoba fungsi Anda. Saya tidak mendapatkan kesalahan saat saya mengujinya.
Airikr
Saya membuatnya bekerja! :) Terima kasih banyak, tetapi saya tidak dapat memberikan suara sampai Anda mengedit jawaban Anda: /
Airikr
3
tidak masalah @Erik Edgren Anda mendapatkan solusi, jadi saya senang sekali. Selamat menikmati ... !!
@ user647826: Luar biasa! Bekerja dengan baik. Anda menyelamatkan malam saya
Addi
1
Sepotong saran: nyatakan alertuntuk seluruh aktivitas sehingga Anda dapat mengabaikannya onDestroy()untuk menghindari kebocoran memori ( if(alert != null) { alert.dismiss(); })
naXa
38
ya pengaturan GPS tidak dapat diubah secara programatik lagi karena itu adalah pengaturan privasi dan kami harus memeriksa apakah mereka diaktifkan atau tidak dari program dan menanganinya jika tidak diaktifkan. Anda dapat memberi tahu pengguna bahwa GPS dimatikan dan menggunakan sesuatu seperti ini untuk menampilkan layar pengaturan kepada pengguna jika Anda mau.
Periksa apakah penyedia lokasi tersedia
String provider =Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED);if(provider !=null){Log.v(TAG," Location providers: "+provider);//Start searching for location and update the location text when update available
startFetchingLocation();}else{// Notify users and show settings if they want to enable GPS}
Jika pengguna ingin mengaktifkan GPS, Anda dapat menampilkan layar pengaturan dengan cara ini.
Dan di onActivityResult Anda, Anda dapat melihat apakah pengguna telah mengaktifkannya atau tidak
protectedvoid onActivityResult(int requestCode,int resultCode,Intent data){if(requestCode == REQUEST_CODE && resultCode ==0){String provider =Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED);if(provider !=null){Log.v(TAG," Location providers: "+provider);//Start searching for location and update the location text when update available. // Do whatever you want
startFetchingLocation();}else{//Users did not switch on the GPS}}}
Itulah satu cara untuk melakukannya dan saya harap ini membantu. Beri tahu saya jika saya melakukan kesalahan.
hai, saya punya masalah yang sama ... bisakah Anda menjelaskan secara singkat, untuk apa "REQUEST_CODE" itu dan untuk apa?
poeschlorn
2
@poeschlorn Anna memposting tautan ke detail di bawah ini. Dalam istilah yang sederhana, RequestCode memungkinkan Anda untuk digunakan startActivityForResultdengan banyak maksud. Ketika niat kembali ke aktivitas Anda, Anda memeriksa RequestCode untuk melihat niat mana yang kembali dan merespons sesuai.
Farray
2
The providerdapat menjadi string kosong. Saya harus mengubah cek ke(provider != null && !provider.isEmpty())
Pawan
Karena penyedia dapat "", pertimbangkan untuk menggunakan mode int = Settings.Secure.getInt (getContentResolver (), Settings.Secure.LOCATION_MODE); Jika mode = 0 GPS mati
Levon Petrosyan
31
Berikut langkah-langkahnya:
Langkah 1: Buat layanan yang berjalan di latar belakang.
Langkah 2: Anda memerlukan izin berikut dalam file Manifest juga:
android.permission.ACCESS_FINE_LOCATION
Langkah 3: Tulis kode:
finalLocationManager manager =(LocationManager)context.getSystemService (Context.LOCATION_SERVICE );if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER ))Toast.makeText(context,"GPS is disabled!",Toast.LENGTH_LONG).show();elseToast.makeText(context,"GPS is enabled!",Toast.LENGTH_LONG).show();
Langkah 4: Atau cukup Anda dapat memeriksa menggunakan:
GPS akan digunakan jika pengguna mengizinkannya digunakan dalam pengaturannya.
Anda tidak bisa lagi mengaktifkannya secara eksplisit, tetapi Anda tidak perlu - ini benar-benar pengaturan privasi, jadi Anda tidak ingin mengubahnya. Jika pengguna tidak masalah dengan aplikasi yang mendapatkan koordinat yang tepat, maka akan aktif. Kemudian API manajer lokasi akan menggunakan GPS jika bisa.
Jika aplikasi Anda benar-benar tidak berguna tanpa GPS, dan tidak aktif, Anda dapat membuka aplikasi pengaturan di layar kanan menggunakan niat sehingga pengguna dapat mengaktifkannya.
Di penangan Anda LocationListener, implement onProviderEnableddan onProviderDisabledevent. Saat Anda menelepon requestLocationUpdates(...), jika GPS dinonaktifkan di telepon, onProviderDisabledakan dipanggil; jika pengguna mengaktifkan GPS, onProviderEnabledakan dipanggil.
InKotlin:-How to check GPS is enable ornot
val manager = getSystemService(Context.LOCATION_SERVICE)asLocationManagerif(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
checkGPSEnable()}private fun checkGPSEnable(){
val dialogBuilder =AlertDialog.Builder(this)
dialogBuilder.setMessage("Your GPS seems to be disabled, do you want to enable it?").setCancelable(false).setPositiveButton("Yes",DialogInterface.OnClickListener{ dialog, id
->
startActivity(Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS))}).setNegativeButton("No",DialogInterface.OnClickListener{ dialog, id ->
dialog.cancel()})
val alert = dialogBuilder.create()
alert.show()}
Jawaban:
Cara terbaik tampaknya adalah sebagai berikut:
sumber
alert
untuk mendeklarasikan seluruh aktivitas sehingga Anda dapat mengabaikannya di onDestroy untuk menghindari kebocoran memori (if(alert != null) { alert.dismiss(); }
)LocationManager.NETWORK_PROVIDER
akan mengembalikan trueDi android, kita dapat dengan mudah memeriksa apakah GPS diaktifkan di perangkat atau tidak menggunakan LocationManager.
Berikut adalah program sederhana untuk Memeriksa.
GPS Diaktifkan atau Tidak: - Tambahkan baris izin pengguna di bawah ini di AndroidManifest.xml ke Access Location
File kelas java Anda seharusnya
Outputnya akan terlihat seperti
sumber
alert
untuk seluruh aktivitas sehingga Anda dapat mengabaikannyaonDestroy()
untuk menghindari kebocoran memori (if(alert != null) { alert.dismiss(); }
)ya pengaturan GPS tidak dapat diubah secara programatik lagi karena itu adalah pengaturan privasi dan kami harus memeriksa apakah mereka diaktifkan atau tidak dari program dan menanganinya jika tidak diaktifkan. Anda dapat memberi tahu pengguna bahwa GPS dimatikan dan menggunakan sesuatu seperti ini untuk menampilkan layar pengaturan kepada pengguna jika Anda mau.
Periksa apakah penyedia lokasi tersedia
Jika pengguna ingin mengaktifkan GPS, Anda dapat menampilkan layar pengaturan dengan cara ini.
Dan di onActivityResult Anda, Anda dapat melihat apakah pengguna telah mengaktifkannya atau tidak
Itulah satu cara untuk melakukannya dan saya harap ini membantu. Beri tahu saya jika saya melakukan kesalahan.
sumber
startActivityForResult
dengan banyak maksud. Ketika niat kembali ke aktivitas Anda, Anda memeriksa RequestCode untuk melihat niat mana yang kembali dan merespons sesuai.provider
dapat menjadi string kosong. Saya harus mengubah cek ke(provider != null && !provider.isEmpty())
Berikut langkah-langkahnya:
Langkah 1: Buat layanan yang berjalan di latar belakang.
Langkah 2: Anda memerlukan izin berikut dalam file Manifest juga:
Langkah 3: Tulis kode:
Langkah 4: Atau cukup Anda dapat memeriksa menggunakan:
Langkah 5: Jalankan layanan Anda terus-menerus untuk memonitor koneksi.
sumber
Ya, Anda dapat memeriksa di bawah ini kodenya:
sumber
Metode ini akan menggunakan layanan LocationManager .
Tautan Sumber
sumber
GPS akan digunakan jika pengguna mengizinkannya digunakan dalam pengaturannya.
Anda tidak bisa lagi mengaktifkannya secara eksplisit, tetapi Anda tidak perlu - ini benar-benar pengaturan privasi, jadi Anda tidak ingin mengubahnya. Jika pengguna tidak masalah dengan aplikasi yang mendapatkan koordinat yang tepat, maka akan aktif. Kemudian API manajer lokasi akan menggunakan GPS jika bisa.
Jika aplikasi Anda benar-benar tidak berguna tanpa GPS, dan tidak aktif, Anda dapat membuka aplikasi pengaturan di layar kanan menggunakan niat sehingga pengguna dapat mengaktifkannya.
sumber
Sepotong kode ini memeriksa status GPS
`
sumber
Di penangan Anda
LocationListener
, implementonProviderEnabled
danonProviderDisabled
event. Saat Anda meneleponrequestLocationUpdates(...)
, jika GPS dinonaktifkan di telepon,onProviderDisabled
akan dipanggil; jika pengguna mengaktifkan GPS,onProviderEnabled
akan dipanggil.sumber
sumber