2017-05-25 183 views
1

我正在測試我的應用在諸如Coolpad(Lolipop MRI),Samsung Galaxy grand neo(Kitkat),Redmi(Marshmallow),Lenovo z2等設備上的動作覆蓋加上(棉花糖))在來電屏幕上顯示對話。事情似乎適用於lenovo z2 plus()以外的設備。Settings.ACTION_MANAGE_OVERLAY_PERMISSION權限在api level 23以下的所有設備上都不起作用

正式要求准許直接我得到異常:

public void testPermission() { 
    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())); 
      startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE); 
      } 
    } 
} 

android.content.ActivityNotFoundException:無活動處理意向{行動= android.settings.action.MANAGE_OVERLAY_PERMISSION

現在我改變請求權限:

public void testPermission() { 
    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())); 
      if (intent.resolveActivity(getPackageManager()) != null) { 
       startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE); 
      } 
     } 
    } 
} 

但它仍然無法要求在zuk 2許可。立即的幫助表示讚賞。

回答

-1

嘗試,這

這是爲我工作

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      if (!Settings.canDrawOverlays(this)) { 
       Intent localIntent = new Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION"); 
       localIntent.setData(Uri.parse("package:" + getPackageName())); 
       localIntent.setFlags(268435456); 
       startActivity(localIntent); 
      } 
     } 
+0

這並沒有爲我工作:異常: android.content.ActivityNotFoundException:無活動處理意向{行動= android.settings.action.MANAGE_OVERLAY_PERMISSION –

+0

你有沒有把這一個「Intent localIntent = new Intent(」android.settings.action.MANAGE_OVERLAY_PERMISSION「);」 – UltimateDevil

-1

使用下面的代碼。

ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
       REQUEST_SDCARD); 

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

Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, 
       Uri.parse("package:" + getPackageName())); 
     startActivityForResult(intent, 5469); 


     } 
    } 

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode==5469) 
     { 


     } 
    } 
相關問題