如何处理java.lang.SecurityException:android.text.format.DateFormat.getDateFormat需要READ_PHONE_STATE?

时间:2015-11-02 17:51:42

标签: android date-format android-permissions securityexception android-securityexception

我的应用程序被发送了设备Y625-U21(HWY625-U)的堆栈跟踪,该应用程序不要求READ_PHONE_STATE,因为文档没有说明使用此权限获取dateFormat。我们已经在各种设备上测试了应用程序,但这种情况不会发生。

java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10149 nor current process has android.permission.READ_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:1472)
at android.os.Parcel.readException(Parcel.java:1426)
at com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy.getSubscriberId(IPhoneSubInfo.java:317)
at android.telephony.TelephonyManager.getSubscriberId(TelephonyManager.java:1094)
at android.text.format.DateFormat.getDateFormatStringForSetting(DateFormat.java:262)
at android.text.format.DateFormat.getDateFormatForSetting(DateFormat.java:250)
at android.text.format.DateFormat.getDateFormat(DateFormat.java:236)
at edu.usf.cutr.opentripplanner.android.util.ConversionUtils.getTimeWithContext(ConversionUtils.java:217)
at edu.usf.cutr.opentripplanner.android.util.ConversionUtils.getTimeWithContext(ConversionUtils.java:210)
at edu.usf.cutr.opentripplanner.android.fragments.MainFragment.fillItinerariesSpinner(MainFragment.java:3521)
at edu.usf.cutr.opentripplanner.android.fragments.MainFragment.onTripRequestComplete(MainFragment.java:3462)
at edu.usf.cutr.opentripplanner.android.tasks.TripRequest.onPostExecute(TripRequest.java:171)
at edu.usf.cutr.opentripplanner.android.tasks.TripRequest.onPostExecute(TripRequest.java:60)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5135)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:0)

我可以说,当您的应用在Google Play中进行大量安装后,您将在Google Developer Console中收到许多奇怪的崩溃报告。 有时你无能为力,你必须将你的代码放在try / catch块中。

我不了解您案件的所有细节,但在我的案件中,这是唯一的解决方案。

try {
    //your code here
} catch (SecurityException e) {
    e.printStackTrace();
    //do smth in this scenario
} 

答案 1 :(得分:-1)

在清单文件中包含此权限 READ_PHONE_STATE 你得到这个例外becoz你还没有在清单文件中声明这个权限。