在给出许可请求后,无法获取棉花糖中的位置

时间:2017-06-13 04:53:04

标签: android

我正在开发一个位置应用程序,除了在Marshmallow之外的所有设备都正常工作。我在运行时请求了权限,当我授予权限时,如果我去设置并从高精度更改位置,则不会获取经度和纬度节省电池,提取位置,应用程序正常工作。我希望以高精度获取位置。

                   ActivityCompat.requestPermissions(this,
            new String[]{
                    Manifest.permission.CAMERA,
                    android.Manifest.permission.ACCESS_FINE_LOCATION,
                    android.Manifest.permission.ACCESS_COARSE_LOCATION,
                    android.Manifest.permission.ACCESS_WIFI_STATE,
                    Manifest.permission.INTERNET,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.READ_PHONE_STATE,
                    Manifest.permission.WAKE_LOCK,
            },
            1);

3 个答案:

答案 0 :(得分:2)

试试这个

第1步: - 在manifyr文件中添加此权限

<service
            android:name=".smsReceiveService"
            android:exported="true"
            android:enabled="true"
            android:process=":myProcess"
            android:isolatedProcess="true"
            android:permission="android.permission.RECEIVE_SMS" />

第2步:询问运行时权限

 android.Manifest.permission.ACCESS_FINE_LOCATION,
 android.Manifest.permission.ACCESS_COARSE_LOCATION,

第3步:处理permsiion结果

 String permission = android.Manifest.permission.ACCESS_FINE_LOCATION;
            if (ActivityCompat.checkSelfPermission(SearchCityClass.this, permission)
                    != PackageManager.PERMISSION_GRANTED && ActivityCompat.
                    checkSelfPermission(SearchCityClass.this, android.Manifest.permission.ACCESS_COARSE_LOCATION)
                    != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(SearchCityClass.this, new String[]
                        {permission}, PERMISSION_GPS_CODE);

            }

答案 1 :(得分:1)

你必须像这样给予Android 6运行时权限

    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) ==
                    PackageManager.PERMISSION_GRANTED &&
                    ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) ==
                            PackageManager.PERMISSION_GRANTED) {
                    // Permission already Granted
                    //Do your work here
//Perform operations here only which requires permission
            } else {
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
            }

如果尚未授予权限,则覆盖onRequestPermission结果

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            if (requestCode == 1) {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                            //Permission Granted
                            //Do your work here
//Perform operations here only which requires permission
                }
            }
        }

答案 2 :(得分:0)

将此代码添加到您的Activity类

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

    requestLocationPermission();
    //your other codes
}

private void requestLocationPermission() {

if (ContextCompat.checkSelfPermission(this, 
android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
                ContextCompat.checkSelfPermission(this, 
                android.Manifest.permission.ACCESS_COARSE_LOCATION) ==
                PackageManager.PERMISSION_GRANTED) {

        } else {
            ActivityCompat.requestPermissions(this, new String[]
   {
    Manifest.permission.ACCESS_FINE_LOCATION, 
    Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    //Checking the request code of our request
     //If permission is granted
    if (requestCode == 1) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            //Displaying a toast
            Toast.makeText(this, "Permission granted now you can get the location", Toast.LENGTH_LONG).show();

            } else {
            //Displaying another toast if permission is not granted
            Toast.makeText(this, "Oops you just denied the permission", Toast.LENGTH_LONG).show();
           }
}

在Mainfest XML上添加它

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>