2016-12-07 16 views
0

こんにちは私はいくつかのデバイスが実行時permission.whatを表示しないという問題に直面していますか?私は設定に移動し、アクセス権を許可したときに、私はいくつかのデバイスとアプリのcrashes.butに直面しています が、実行時のアクセス許可がRxPermission経由で扱うようにmarshmallowを持つ一部のデバイスで実行時のアクセス許可のダイアログが表示されない

+0

クラッシュログ+デバイスとは何ですか?どのようにあなたのデバイスの問題&コードの問題ではないことを確認し、最後に、あなたはXiomiデバイスについて話している場合、あなたは悪夢があるだろう。 – k0sh

+0

あなたはまた、この権限をマニフェストに追加する必要があります。これをやったことがありますか、それとも実行時に要求しますか? – Opiatefuchs

+0

投稿*エラーログ*または*ログキャット*。 @Opiatefuchs Sirが何を確認してその部分を通過しているかを確認してください。 –

答えて

0

ベストプラクティス結構です。

RxPermissionで試してみてくださいあなたはあなたがプログラムで、あなたのアプリケーションの最初の起動時にダイアログなしのアクセス権を設定することができます

+0

on nexus 5それはうまく動作しています。しかし、私の臨床試験では6.0を持っているsamsung s7を持っています。 – 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

これを私の仕事で試してください。 –

+0

私のコードはいくつかのデバイスといくつかのデバイスで動作しています。 – Usman

+0

ohkどのデバイスがクラッシュしていますか? –

0

を発行解決します。私はあなたがsudoを必要とする場合は100%わからない

setPermission("android.permission.SYSTEM_ALERT_WINDOW"); 

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(); 
     } 
    } 
} 

今、あなたがそれを呼び出すことができます。

+0

私は上記のコードでこのエラーに直面しています java.io.IOException: exec()の実行中にエラーが発生しました。コマンド:[/ system/bin/su、-c、pm、grant、 "パッケージ名"、android.permission.ACCESS_FINE_LOCATION]作業ディレクトリ:null環境:null – Usman

関連する問題