سؤال

أقوم حاليًا بكتابة تطبيق على Android يعمل مع نظام تحديد المواقع العالمي (GPS).في الوقت الحالي، يمكنني معرفة ما إذا كان نظام تحديد المواقع العالمي (GPS) ممكّنًا أم لا.مشكلتي هي أنني أريد تمكين نظام تحديد المواقع العالمي (GPS) عند بدء تشغيل التطبيق إذا كان معطلاً.كيف يمكنني القيام بذلك برمجياً؟

هل كانت مفيدة؟

المحلول

لا يمكنك ذلك، بدءًا من Android 1.5.أقصى ما يمكنك فعله هو فتح النشاط للسماح للمستخدم بتشغيله/إيقاف تشغيله.استخدم الإجراء الموجود في android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS لصياغة نية لفتح هذا النشاط.

نصائح أخرى

if(!LocationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER ))
{
    Intent myIntent = new Intent( Settings.ACTION_SECURITY_SETTINGS );
    startActivity(myIntent);
}

وهذا الرمز الطريقة يمكن أن تكون مساعدة لك

private void turnGPSOnOff(){
  String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
  if(!provider.contains("gps")){
    final Intent poke = new Intent();
    poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
    poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
    poke.setData(Uri.parse("3")); 
    sendBroadcast(poke);
    //Toast.makeText(this, "Your GPS is Enabled",Toast.LENGTH_SHORT).show();
  }
}

وقد استخدم ما يلي:

try {
  Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true);
} catch (Exception e) {
  logger.log(Log.ERROR, e, e.getMessage());
}

ولكن أنه سوف يعمل فقط إذا كان لديك مستوى نظام الحماية التوقيع. لذلك تحتاج إلى طهي صورة خاصة بك فعلا لاستخدامه: /

تحقق أولاً مما إذا كانت خدمة الموقع قيد التشغيل بالفعل أم لا ؟؟

التحقق من خدمة الموقع ممكّنة أم لا

public boolean isLocationServiceEnabled(){
    LocationManager locationManager = null;
    boolean gps_enabled= false,network_enabled = false;

    if(locationManager ==null)
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    try{
        gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    }catch(Exception ex){
        //do nothing...
    }

    try{
        network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    }catch(Exception ex){
        //do nothing...
    }

    return gps_enabled || network_enabled;

}

ثم أخيرًا لفتح إذا تم إيقاف خدمة الموقع مسبقًا

  if (isLocationServiceEnabled())) {
          //DO what you need...
     } else {
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setMessage("Seems Like location service is off,   Enable this to show map")
      .setPositiveButton("YES", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
                             Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                                    startActivity(intent);
                                }
                            }).setNegativeButton("NO THANKS", null).create().show();
                }

ويجب عليك استخدام إعدادات الموقع الحوار في خدمات Play التي يطالب المستخدم لتمكين خدمات الموقع (إذا لزم الأمر) بنقرة واحدة فقط.

وإذا كان على مستوى المستخدم من الروبوت تقع سؤالك هذه الخصائص في: "Settings -> Location -> Use wireless networks" -> "Settings -> Location -> Use GPS satellites"

ولكن في المطور يمكن استخدام "android.provider.Settings.Secure" فئة مع الأذونات المناسبة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top