我们在我们的应用中使用string feedcolumns = "select FeedColumnName from myTable where FeedProcessID = @feedprocessid";
DataTable dt = new DataTable("datafeed");
using (SqlConnection connUpd = new SqlConnection("MyConnection")) {
using (SqlCommand columnscommand = new SqlCommand(feedcolumns, connUpd)) {
columnscommand.Parameters.AddWithValue("@feedprocessid", feedprocessid);
connUpd.Open();
var dataReader = columnscommand.ExecuteReader();
dt.Load(dataReader);
}
}
中的getCellInfo
方法,它一直运行正常,没有任何问题,只有很少的设备会崩溃并显示以下消息
TelephonyManager
但是,文档并未说我们需要此权限才能调用此方法。此外,我们根本不会要求这个许可。有没有人遇到过这个问题。我猜这可能是权限本身的一般问题?我们的目标是sdk版本22,minSdkVersion是15。
答案 0 :(得分:1)
使用TelephonyManager
时,我的应用程序有相同的问题。其targetSdkVersion为27,minSdkVersion为17。
根据我的Google Play控制台中的应用崩溃报告,出现此SecurityException问题的手机为具有Android 5.0-5.1的Oppo,LG,Asus和Sony手机。之后,我在装有Android 5.0和5.1的Android Studio模拟器上运行了我的应用程序。我发现由于没有READ_PHONE_STATE
权限,它将崩溃。
因此,我认为此问题将在大多数装有Android 5.0或5.1的设备上发生,而与手机品牌无关。
解决方案是将以下代码添加到AndroidManifest.xml
:
<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="22"/>
我将此权限的maxSdkVersion
设置为22,因为此SecurityException在Android 6.0之后不会发生,因此对于Android 6.0或更高版本的手机不需要此权限。