我正在构建一个应用程序,我正在使用位置。我已经宣布在明显的权限:当我在Manifest中拥有位置权限并且为什么出现此警报对话框错误时,是否需要用于访问位置的警报对话框?
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
我现在就需要作出警告对话框,使用户能够准许他的位置的设备上,或者我已经做到了与清单此权限吗? 当我为开启GPS上我得到这个错误对话框:
09-14 12:18:12.614 28114-28114/com.telnet.asp E/WindowManager: Activity com.telnet.asp.presentation.view.activities.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42b29910 V.E..... R.....ID 0,0-720,351} that was originally added here
android.view.WindowLeaked: Activity com.telnet.asp.presentation.view.activities.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42b29910 V.E..... R.....ID 0,0-720,351} that was originally added here
at android.view.ViewRootImpl.<init>(ViewRootImpl.java)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java)
at android.app.Dialog.show(Dialog.java)
at com.telnet.asp.presentation.view.activities.MainActivity.showDialogForAllowingLocation(MainActivity.java:380)
at com.telnet.asp.presentation.view.activities.MainActivity.onCreate(MainActivity.java:63)
at android.app.Activity.performCreate(Activity.java)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java)
at android.app.ActivityThread.access$700(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java)
at android.os.Handler.dispatchMessage(Handler.java)
at android.os.Looper.loop(Looper.java)
at android.app.ActivityThread.main(ActivityThread.java)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
at dalvik.system.NativeStart.main(Native Method)
这是我的警告对话框:
private void showDialogForAllowingLocation() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false);
builder.setTitle(getResources().getString(R.string.enable_permission));
builder.setMessage(getResources().getString(R.string.enable_access));
builder.setInverseBackgroundForced(true);
builder.setPositiveButton(getResources().getString(R.string.enable), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
startActivity(
new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
});
builder.setNegativeButton(getResources().getString(R.string.ignore), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
private void EnableGPSIfPossible() {
final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
showDialogForAllowingLocation();
}
}
哪里是我的错?
您必须添加对话框,提示用户对GPS如果手机GPS关闭。 –
请参阅编辑的问题。 – Atenica
是的,如果targetSdkVersion i等于或大于23,并且手机使用Android M或更高版本 - 请点击此处查看 - https://inthecheesefactory.com/blog/things-you-need-to-know-about -android-m-permission-developer-edition/en - 否则,当您在Android M下面下载低于23的应用程序时,它会要求您在安装应用程序之前授予许可权 – Tasos