Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android 6.0“gps”位置提供程序需要ACCESS_FINE_LOCATION权限大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在清单中定义了使用gps的所有预设.喜欢

“uses-permission android:name =”android.permission.ACCESS_FINE_LOCATION“/>

“uses-permission android:name =”android.permission.ACCESS_COARSE_LOCATION“/>

每当我尝试在Android 6.0上打开此活动时,它都会停止此logcat消息.但适用于某些手机.有人可以帮助我弄明白,并提供解决方案.几天来我一直试图解决这个问题,以及如何解决这个问题.

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponenTinfo{org.data.smurf/org.data.smurf.KonkurransE}: java.lang.SecurityException: "gps" LOCATIOn provider requires ACCESS_FINE_LOCATION permission.
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
   at android.app.ActivityThread.access$1100(ActivityThread.java:221)
   at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1794)
   at android.os.Handler.dispatchmessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:158)
   at android.app.ActivityThread.main(ActivityThread.java:7224)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by java.lang.SecurityException: "gps" LOCATIOn provider requires ACCESS_FINE_LOCATION permission.
   at android.os.Parcel.readException(Parcel.java:1620)
   at android.os.Parcel.readException(Parcel.java:1573)
   at android.LOCATIOn.ILOCATIOnManager$stub$Proxy.requestLOCATIOnupdates(ILOCATIOnManager.java:688)
   at android.LOCATIOn.LOCATIOnManager.requestLOCATIOnupdates(LOCATIOnManager.java:908)
   at android.LOCATIOn.LOCATIOnManager.requestLOCATIOnupdates(LOCATIOnManager.java:469)
   at org.data.smurf.Konkurranse.onCreate(Konkurranse.java:197)
   at android.app.Activity.performCreate(Activity.java:6876)
   at android.app.instrumentation.callActivityOnCreate(instrumentation.java:1135)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
   at android.app.ActivityThread.access$1100(ActivityThread.java:221)
   at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1794)
   at android.os.Handler.dispatchmessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:158)
   at android.app.ActivityThread.main(ActivityThread.java:7224)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

这是我的Konkurranse /竞赛活动.我删除了与菜单和操作栏无关的代码.

Public class Konkurranse Extends Activity {

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
        FacebookSdk.sdkInitialize(getApplicationContext());
        Fresco.initialize(getApplicationContext());
        setContentView(R.layout.activity_konkurransE);
        LOCATIOnManager LOCATIOnManager = (LOCATIOnManager) this.getSystemservice(Context.LOCATION_serviCE);



        final com.facebook.Profile profile = com.facebook.Profile.getCurrentProfile();
        final ProfilePictureView profilePictureView = (ProfilePictureView) findViewById(R.id.profilepic);
        final TextView name = (TextView) findViewById(R.id.Name);
        simpleDraweeView = (SimpleDraweeView) findViewById(R.id.profilePicturE);
        RoundingParams roundingParams = RoundingParams.fromCornersRadius(50f);
        roundingParams.setRoundAsCircle(true);
        simpleDraweeView.getHierarchy().setRoundingParams(roundingParams);


        /// Logged IN \\\
        if (profile != null) {
            profilePictureView.getProfilEID();
            profilePictureView.setProfilEID(profile.getId());
            name.setText(profile.getName());
            simpleDraweeView.setImageURI(profile.getProfilePictureUri(100,100));
        }


        final SharedPreferences sharedPrefs = getSharedPreferences("details",MODE_PRIVATE);
        //After referencing your Views,add this.
        final String nameStr = sharedPrefs.getString("name",null);
        final String idStr = sharedPrefs.getString("id",null);
        AccessToken token = AccessToken.getCurrentAccessToken();
        if (token != null) {
            if (nameStr != null) name.setText(nameStr);
            if (idStr != null) profilePictureView.setProfilEID(idStr);
            simpleDraweeView.setImageURI(profile.getProfilePictureUri(100,100));
        }

        //.. Do the same for other profile data


        mobilnummer = (EditText) findViewById(R.id.mobilnummer);

        buttongps = (Button) findViewById(R.id.gps);
        buttongps.setOnClickListener(onButtongpsClick);

        buttonblue = (Button) findViewById(R.id.bluetooth);
        buttonblue.setOnClickListener(onButtonblueClick);


        final LOCATIOnManager manager;
        manager = (LOCATIOnManager) getSystemservice(Context.LOCATION_serviCE);
        final ImageView gpsImg = (ImageView) findViewById(R.id.gpsstatus);
        if (manager.isProviderEnabled(LOCATIOnManager.GPS_PROVIDER)) {
            gpsImg.setImageresource(R.drawable.ok);
        } else {
            gpsImg.setImageresource(R.drawable.notok);  //not ok
        }

        // Register bluettoth listener
        bluetoothListener = new BluetoothListener() {
            @Override
            public void onBluetoothOff() {
                btImg.setImageresource(R.drawable.notok);  //not ok
            }

            @Override
            public void onBluetoothOn() {
                btImg.setImageresource(R.drawable.ok);
            }
        };
        IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
        registerReceiver(bluetoothListener,filter);

        gpsListener = new GPSListener(this) {
            @Override
            public void onGPSOff() {
                gpsImg.setImageresource(R.drawable.notok);  //not ok

            }

            @Override
            public void onGPSOn() {
                gpsImg.setImageresource(R.drawable.ok);
            }
        };

        // Henter fra SharedPrefs
        SharedPreferences prefs = getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
        String savedMobilenumber = prefs.getString("mobilnummer","");
        mobilnummer.setText(savedMobilenumber);


        final ImageView tlfstatus = (ImageView) findViewById(R.id.tlfstatus);
        if (mobilnummer.getText().toString().length() >= 8) {
            tlfstatus.setImageresource(R.drawable.ok);
        } else {
            tlfstatus.setImageresource(R.drawable.notok); //not ok
        }





        // OnCreate ends here.
    }



    public View.onClickListener onButtongpsClick = new View.onClickListener() {
        @Override
        public void onClick(View v) {
            Intent gpsOptionsIntent = new Intent(android.provider.SetTings.ACTION_LOCATION_sourcE_SETTinGS);
            startActivity(gpsOptionsIntent);
        }
    };


    public View.onClickListener onButtonblueClick = new View.onClickListener() {
        @Override
        public void onClick(View v) {
            BluetoothAdapter mBluetoothAdapter;
            mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            if (!mBluetoothAdapter.isEnabled()) mBluetoothAdapter.enable();
            ImageView img = (ImageView) findViewById(R.id.bluestatus);
            img.setImageresource(R.drawable.ok);
        }
    };
}

解决方法

Serg的回答是真的.使用Marshmallow(Android 6.0,API Level 23),permissiom系统已更改,现在您需要通过在运行时请求权限来处理Marshmallow设备.有一些库可以简化这个过程.

Easy Permissions就是其中之一.

大佬总结

以上是大佬教程为你收集整理的Android 6.0“gps”位置提供程序需要ACCESS_FINE_LOCATION权限全部内容,希望文章能够帮你解决Android 6.0“gps”位置提供程序需要ACCESS_FINE_LOCATION权限所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。