2016-06-30 13 views
11

Googleストアのアプリのクラッシュレポートで多くの例外が発生しています。 誰かが私にこれを引き起こす可能性があることができますか?私はアンドロイドを使用しています:targetSdkVersion = 19InApp請求:java.lang.SecurityException READ_PHONE_STATEが必要です

java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10131 nor current process has android.permission.READ_PHONE_STATE. 
    at android.os.Parcel.readException(Parcel.java:1546) 
    at android.os.Parcel.readException(Parcel.java:1499) 
    at com.android.vending.billing.IInAppBillingService$Stub$Proxy.getSkuDetails(IInAppBillingService.java:251) 
    at com.inapp.util.IabHelper.querySkuDetails(IabHelper.java:920) 
    at com.inapp.util.IabHelper.queryInventory(IabHelper.java:550) 
    at com.inapp.util.IabHelper.queryInventory(IabHelper.java:522) 
    at com.inapp.util.IabHelper$2.run(IabHelper.java:617) 
    at java.lang.Thread.run(Thread.java:818) 
+0

READ_PHONE_STATEのアクセス許可がありません –

+2

私はそれがマニフェストにある可能性が高いと思いますが、それはマーシュマローデバイスでは認められていません。 https://developer.android.com/training/permissions/requesting.html – DeeV

+0

Api-19をターゲットにしていても、Marshmallowのユーザーはインストール後に手動で権限を取り消すことができます。 –

答えて

-7

はあなたのAndroidManifest.xmlで適切な権限を追加し

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
2

をGoogleが修正を持つ更新が、次のtry catchブロックを出荷していることが確認されたが少なくとも

int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus) 
           throws RemoteException, JSONException { 
     logDebug("Querying SKU details."); 
     ArrayList<String> skuList = new ArrayList<String>(); 
     skuList.addAll(inv.getAllOwnedSkus(itemType)); 
     if (moreSkus != null) { 
      for (String sku : moreSkus) { 
       if (!skuList.contains(sku)) { 
        skuList.add(sku); 
       } 
      } 
     } 

     if (skuList.size() == 0) { 
      logDebug("queryPrices: nothing to do because there are no SKUs."); 
      return BILLING_RESPONSE_RESULT_OK; 
     } 

     // NullPointer crash reported through PlayStore forums 
     if (mService == null) { 
      return IABHELPER_SERVICE_UNAVAILABLE; 
     } 

     Bundle querySkus = new Bundle(); 
     querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuList); 

     try { 
        Bundle skuDetails = mService.getSkuDetails(3, mContext.getPackageName(), itemType, querySkus); 
        if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) { 
         int response = getResponseCodeFromBundle(skuDetails); 
         if (response != BILLING_RESPONSE_RESULT_OK) { 
          logDebug("getSkuDetails() failed: " + getResponseDesc(response)); 
          return response; 
         } 
         else { 
          logError("getSkuDetails() returned a bundle with neither an error nor a detail list."); 
          return IABHELPER_BAD_RESPONSE; 
         } 
        } 

        ArrayList<String> responseList = skuDetails.getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST); 

        for (String thisResponse : responseList) { 
         SkuDetails d = new SkuDetails(itemType, thisResponse); 
         logDebug("Got sku details: " + d); 
         inv.addSkuDetails(d); 
        } 
        return BILLING_RESPONSE_RESULT_OK; 
       } 
       // Security Exception due to missing permissions reported through PlayStore forums 
       catch (SecurityException e) 
       { 
        return IABHELPER_SERVICE_UNAVAILABLE; 
       } 
} 

は注意してくださいクラッシュを防ぎ、そのメソッドのint型のquerySkuDetailsの変化だけ(STR Inventory item、Inventory inv、List moreSkus)はセキュリティ例外のtry catchブロックです。残りはすべて同じままです。

関連する問題