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。 LocationActivityのどこに30行目が正確に入りますか? –

+0

@FredrikMetcalf編集を参照してください: – kiwilifter

答えて

0

アンドロイドバージョン4.4および手動でオンとオフの位置情報サービスをオンにすることはできません以上のこと。それはsecurityExceptionを投げ、手動でのみ行うことができます。

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

私は知らなかった。アドバイスをいただきありがとうございます。 @タルハミルはどうすればそのコード行を組み込むことができますか? – kiwilifter

+0

Nvmが見つかりました。ありがとうございます – kiwilifter

+0

これまでロケーションサービスをオンにする必要があります。特定のアクションでロケーションサービスをオンにする必要があることを示すダイアログをユーザーに表示できます。彼が「はい」をタップするならば、上記の意図を発しなさい。それは良いユーザーエクスペリエンスになります。 –

関連する問題