2016-12-07 38 views
0

您好,我正面临着一些问题,有些设备不能显示运行时权限,那会是什么问题? 我现在面临的一些设备和应用程序crashes.but当我去设置和允许的权限,那么它是好的在某些设备上没有显示运行时权限对话框有棉花糖

+0

崩溃日志+什么是设备?以及你对设备问题和代码问题的确信如何,最后,如果你谈论Xiomi设备,那么你会有一个噩梦。 – k0sh

+0

您还需要将此权限添加到清单...您是否已经完成了这项工作,或者您是否只是在运行时请求? – Opiatefuchs

+0

发布*错误日志*或* Logcat *。并确保@Opiatefuchs爵士建议检查并浏览该部分。 –

回答

0

最佳实践来处理运行时的权限是通过RxPermission

RxPermission尝试将解决您发出

+0

on nexus 5它工作正常,还有更多。但我的clinet有三星s7有6.0 – Usman

0
String[] permissions = new String[]{ 
     Manifest.permission.WRITE_SETTINGS, 
     Manifest.permission.SYSTEM_ALERT_WINDOW, 
     Manifest.permission.WAKE_LOCK, 
     Manifest.permission.INTERNET, 
     Manifest.permission.READ_PHONE_STATE, 
     Manifest.permission.READ_EXTERNAL_STORAGE, 
     Manifest.permission.WRITE_EXTERNAL_STORAGE, 
     Manifest.permission.BROADCAST_STICKY, 
     Manifest.permission.VIBRATE, 
     Manifest.permission.RECORD_AUDIO, 

}; 
private boolean checkPermissions() { 
    int result; 
    List<String> listPermissionsNeeded = new ArrayList<>(); 
    for (String p : permissions) { 
     result = ContextCompat.checkSelfPermission(getActivity(), p); 
     if (result != PackageManager.PERMISSION_GRANTED) { 
      listPermissionsNeeded.add(p); 
     } 
    } 
    if (!listPermissionsNeeded.isEmpty()) { 
     ActivityCompat.requestPermissions(root, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), REQUEST_ID_MULTIPLE_PERMISSIONS); 
     return false; 
    } 
    return true; 
} 
@Override 
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
    if (requestCode == REQUEST_ID_MULTIPLE_PERMISSIONS) { 
     if (grantResults.length > 0 
       && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      // selectImage(); 
      // isPermission = true; 
     } 
     return; 
    } 
} 
+0

试试这个我的工作在6.0 –

+0

我的代码工作在一些设备和一些设备崩溃。 – Usman

+0

ohk哪个设备崩溃了? –

0

您可以在应用程序的第一次启动设置权限,而不对话框编程。

private void setPermission(string permission){ 
     Process process = null; 
     try { 
      process = Runtime.getRuntime().exec("/system/bin/su -c pm grant " + [your package name] + " " + permission); 
      process.waitFor(); 
      Log.d(TAG, "permission exec done " + process.exitValue()); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

现在你可以把它叫做:

setPermission("android.permission.SYSTEM_ALERT_WINDOW"); 

我不是100%肯定,如果你需要sudo的。

+0

我现在面临这个错误与上面的代码 产生java.io.IOException:运行exec()时出错。命令:[/ system/bin/su,-c,pm,grant,“package name”,android.permission.ACCESS_FINE_LOCATION] Working Directory:null Environment:null – Usman

相关问题