0
.

. Что нужно сделать, это включить местоположение, когда это необходимо, и отключить местоположение, когда это не нужно. У меня возникают проблемы с моей службой определения местоположения, когда я нажимаю, чтобы включить службу определения местоположения, в которой говорится: «приложение остановилось», пожалуйста, найдите мой логарифм ниже. любая помощь действительно оценена. СпасибоСлужба определения местоположения Android. Ошибка запуска

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.kenpar.dmsassign2, PID: 21749 
       java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.location.GPS_ENABLED_CHANGE from pid=21749, uid=10184 
        at android.os.Parcel.readException(Parcel.java:1472) 
        at android.os.Parcel.readException(Parcel.java:1426) 
        at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:2640) 
        at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1499) 
        at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:377) 
        at com.kenpar.dmsassign2.LocationActivity$1.onClick(LocationActivity.java:30) 
        at android.view.View.performClick(View.java:4633) 
        at android.view.View$PerformClick.run(View.java:19274) 
        at android.os.Handler.handleCallback(Handler.java:733) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:146) 
        at android.app.ActivityThread.main(ActivityThread.java:5593) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
        at dalvik.system.NativeStart.main(Native Method) 
        Application terminated. 

Расположение кода Java:

public class LocationActivity extends Activity { 
Button onLoc; 
Button offLoc; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_location); 

    onLoc = (Button)findViewById(R.id.onLoc); 
    offLoc = (Button)findViewById(R.id.offLoc); 

    onLoc.setOnClickListener(new OnClickListener(){ 
     public void onClick (View view){ 
      Intent intent = new Intent ("android.location.GPS_ENABLED_CHANGE"); 
      intent.putExtra("enabled", true); 
      sendBroadcast(intent); 
     } 
    }); 

    offLoc.setOnClickListener(new OnClickListener(){ 
     public void onClick (View view){ 
     Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE"); 
     intent.putExtra("enabled", false); 
     sendBroadcast(intent); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.location, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
    } 
} 
+0

Я не могу увидеть, что ошибка, которую вы получите, вы можете поставить все исключения из LogCat. А где именно строка 30 в LocationActivity? –

+0

@FredrikMetcalf См. Edit :) – kiwilifter

ответ

0

на платформе Android версии 4.4 и выше, вы не можете вручную включить службы определения местоположения и выключаться. Он выкинет securityException и может быть выполнен только вручную. Что вы можете сделать, вы можете переместить пользователь на экран настроек услуги определения местоположения, когда место службы требуется обжиг этого намерения:

startActivity(context, new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
+0

Я никогда не знал. Спасибо за совет. @Talha Mir, как именно я бы включил эту строку кода? – kiwilifter

+0

Nvm нашел его. спасибо – kiwilifter

+0

Где бы вы ни находились, чтобы включить службы определения местоположения. Вы можете показать пользователю диалог, указывающий, что для определенного действия требуется, чтобы он включил службу определения местоположения. Если он ударит «Да», убейте вышеуказанное намерение. Это будет хороший пользовательский опыт. –

Смежные вопросы