如何检查服务中的权限

时间:2019-06-15 14:43:24

标签: android json service gson

在下面的代码中,我试图检查onStartCommand上的权限是否可用。但是在requestPermissions方法中,我无法将上下文转换为MainActivity,因此应用程序崩溃了。 请查看belwo和dlet张贴的错误部分,我知道如何解决此错误。

代码_1

 private void checkPermissions() {
    int iter = 0;
    for (String p : PermissionsLocation) {
        if (ContextCompat.checkSelfPermission(this, p) != getPackageManager().PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions((MainActivity) getApplicationContext(), PermissionsLocation, 101 + iter);
        }
        ++iter;
    }
    this.mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
}

private void initInstances() {
    this.mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    this.checkPermissions();
    ...
    ...
    }

错误

2019-06-15 11:48:33.340 5888-5888/com.example.gps_v10 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.gps_v10, PID: 5888
java.lang.RuntimeException: Unable to start service com.example.gps_v10.GPSService@8497d7 with Intent { act=ACTION_START_GPS_READING cmp=com.example.gps_v10/.GPSService }: java.lang.ClassCastException: android.app.Application cannot be cast to com.example.gps_v10.MainActivity
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3556)
    at android.app.ActivityThread.-wrap20(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1698)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
 Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.example.gps_v10.MainActivity
    at com.example.gps_v10.GPSService.checkPermissions(GPSService.java:44)
    at com.example.gps_v10.GPSService.onStartCommand(GPSService.java:57)
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3539)
    at android.app.ActivityThread.-wrap20(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1698) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

0 个答案:

没有答案