Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无静态方法覆盖_Android - Fatal编程技术网

Android 无静态方法覆盖

Android 无静态方法覆盖,android,Android,我注意到有人在使用我的应用程序时报告了一个由Google开发者控制台记录的崩溃: java.lang.NoSuchMethodError: No static method canDrawOverlays(Landroid/content/Context;)Z in class Landroid/provider/Settings; or its super classes (declaration of 'android.provider.Settings' appears in /syste

我注意到有人在使用我的应用程序时报告了一个由Google开发者控制台记录的崩溃:

java.lang.NoSuchMethodError: No static method canDrawOverlays(Landroid/content/Context;)Z in class Landroid/provider/Settings; or its super classes (declaration of 'android.provider.Settings' appears in /system/framework/framework.jar)
    at com.pack.MainActivity.checkDrawOverlayPermission(MainActivity.java:311)
    at com.pack.MainActivity.onCreate(MainActivity.java:127)
    at android.app.Activity.performCreate(Activity.java:6033)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2397)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5268)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
canDrawOverlays是一种API 23+方法,我这样使用它:

 /** code to post/handler request for permission */
    public final static int REQUEST_CODE = 100; /*(see edit II)*/

    @SuppressLint("NewApi")
    public void checkDrawOverlayPermission() {
        /** check if we already  have permission to draw over other apps */
        if (!Settings.canDrawOverlays(this)) {
            /** if not construct intent to request permission */
            Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                    Uri.parse("package:" + getPackageName()));
            /** request permission via start activity for result */
            startActivityForResult(intent, REQUEST_CODE);
        }
    }
我的主要活动是:

checkDrawOverlayPermission();
使用Android 5.1崩溃的设备


我如何确保我的应用程序能在安卓5.1上运行?(API 22及以下版本)如果没有API 23及以上版本提供的此方法,请检查运行代码的设备的当前API。如果大于等于23,则可以使用该代码

if(Build.VERSION.SDK_INT >= 23) {
     // if (!Settings.canDrawOverlays(this)) {
     //
} else {
     // another similar method that supports device have API < 23 
}
if(Build.VERSION.SDK\u INT>=23){
//如果(!Settings.canDrawOverlays(此)){
//
}否则{
//另一种支持设备API<23的类似方法
}

对于较新SDK版本中出现的所有方法,应使用以下模式:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  // code for Marshmallow (SDK 23) and newer versions
} else {
  // fallback for older versions
}
用这个

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

       if (!Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
        /** request permission via start activity for result */ 
        startActivityForResult(intent, REQUEST_CODE);
    } 

    } else {
     }