2016-04-25 10 views
0

私は、Android 6.0 = PERMISSION_NOT_GRANTEDアンドロイド6.0 = PERMISSION_NOT_GRANTED

P.S.に問題がある(連絡先やLOCATION権限を持つ号)私は問題が連絡先と場所の許可を持っていることを知っていますが、誰もそれを修正する方法を知っていますか?

私はJSONからDATAを取得できますが、PERMISSION_NOT_GRANTED例外が原因でデータベースに情報を送信できません。

私はアクセス許可の問題について考えましたが、アンドロイドは情報をデータベースに送信しようとしているときに許可を求めていません。

私は、インターネットのアクセス権を持っている:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

エラーは次のようになります。

04-25 03:01:25.611 29073-29808/com.sandro.openalprsample E/Volley: [615] NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference 
                    java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference 
                     at libcore.net.UriCodec.encode(UriCodec.java:132) 
                     at java.net.URLEncoder.encode(URLEncoder.java:57) 
                     at com.android.volley.Request.encodeParameters(Request.java:480) 
                     at com.android.volley.Request.getBody(Request.java:466) 
                     at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:236) 
                     at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:210) 
                     at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:106) 
                     at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96) 
                     at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112) 

私はこの1つを試してみましたが、それは動作しません:

明らか
public boolean isStoragePermissionGranted() { 
     if (Build.VERSION.SDK_INT >= 23) { 
      if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) 
        == PackageManager.PERMISSION_GRANTED) { 
       Log.v(TAG,"Permission is granted"); 
       return true; 
      } else { 

       Log.v(TAG,"Permission is revoked"); 
       ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
       return false; 
      } 
     } 
     else { //permission is automatically granted on sdk<23 upon installation 
      Log.v(TAG,"Permission is granted"); 
      return true; 
     } 


    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     if(grantResults[0]== PackageManager.PERMISSION_GRANTED){ 
      Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]); 
      //resume tasks needing this permission 
     } 
    } 
+0

こんにちは、@実行中の許可を追加するにはここから参照してくださいhttp://stackoverflow.com/questions/35973235/android-permission-denial-starting-intent-with-revoked-permission-android-perm/35973323#35973323 – Saveen

+0

@Saveen Updated ...試したメソッドを見てください –

+0

@Fogこれは例外ではありませんがパーミッションに関連していますが、vollyを使って文字列をエンコードするといくつか問題があります – Saveen

答えて

1

。あなたのtargetSdkVersionは23を目標としており、android.permission.WRITE_EXTERNAL_STORAGE Android 6.0 includeランタイム許可機能の実行時アクセス許可を使用する必要があります。一部のアクセス許可は危険なアクセス許可と見なされ、実行時に要求する必要があります。 android.permission.WRITE_EXTERNAL_STORAGEがその1つです。

危険なアクセス許可と正常なアクセス許可をここではから知ることができます。

Androidランタイムの使用方法については、Requesting Permissions at Run Timeからアクセスできます。

+0

更新されました...私が試した方法を見てください –