java.lang.SecurityException: 用户10032和当前进程都没有android.permission.MODIFY_PHONE_STATE
java.lang.SecurityException: Neither user 10032 nor current process has android.permission.MODIFY_PHONE_STATE
我正在开发一项在启动设备时自动 PIN/PUK 的服务。
服务在引导时启动。
我正在使用带有自反方法的 ITelephony。
我的 phone 是 lollipop 5.1.1,它是一个 root 的 nexus 5。
我的清单有
Android 工作室说 "Permission is only granted to system apps"
我正在使用这个代码片段:
TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
int state = tm.getSimState();
if(state == TelephonyManager.SIM_STATE_PIN_REQUIRED || state == TelephonyManager.SIM_STATE_PUK_REQUIRED)
{
Log.d(TAG,"PIN PUK STATE = " + state );
if (state == TelephonyManager.SIM_STATE_PIN_REQUIRED ){
try {
message += ", PIN Code required" ;
Class clazz = Class.forName(tm.getClass().getName());
if (clazz != null) {
Method m = clazz.getDeclaredMethod("getITelephony");
m.setAccessible(true);
Object iTelephony = m.invoke(tm);
Class params[] = new Class[1];
params[0] = String.class;
Method m2 = iTelephony.getClass().getDeclaredMethod("supplyPin", params);
m2.setAccessible(true);
Object i = m2.invoke(iTelephony, "1111");
Log.d(TAG, m2.toString() + " *** " + i.toString());
}
}catch (Exception e) {
Log.d(TAG,"Impossible to unlock " + e.toString());
e.printStackTrace();
}
}
我得到了这个日志:
07-20 10:31:33.109 1267-1267/eu.cabrera.pinunlocker W/System.err﹕ Caused by: java.lang.SecurityException: Neither user 10032 nor current process has android.permission.MODIFY_PHONE_STATE.
07-20 10:31:33.112 1267-1267/eu.cabrera.pinunlocker W/System.err﹕ at android.os.Parcel.readException(Parcel.java:1546)
07-20 10:31:33.112 1267-1267/eu.cabrera.pinunlocker W/System.err﹕ at android.os.Parcel.readException(Parcel.java:1499)
07-20 10:31:33.112 1267-1267/eu.cabrera.pinunlocker W/System.err﹕ at com.android.internal.telephony.ITelephony$Stub$Proxy.supplyPin(ITelephony.java:1540)
我用普通应用测试过,现在用系统应用测试,同样的问题。
我是不是在做坏事?我的应用程序真的是系统吗?我已将 eu.cabrera.pinunlocker.apk 复制到 /system/app
我需要什么才能授予我的应用 android.permission.MODIFY_PHONE_STATE?
感谢您的帮助。
安托万
您是否尝试将您的应用放到 /system/priv-app?因为如果您需要授予系统权限,/system/priv-app 是您应用的正确位置。只有 /system/priv-app 中的 apk 可以使用 "system" 级权限
我正在开发一项在启动设备时自动 PIN/PUK 的服务。 服务在引导时启动。 我正在使用带有自反方法的 ITelephony。 我的 phone 是 lollipop 5.1.1,它是一个 root 的 nexus 5。 我的清单有 Android 工作室说 "Permission is only granted to system apps"
我正在使用这个代码片段:
TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
int state = tm.getSimState();
if(state == TelephonyManager.SIM_STATE_PIN_REQUIRED || state == TelephonyManager.SIM_STATE_PUK_REQUIRED)
{
Log.d(TAG,"PIN PUK STATE = " + state );
if (state == TelephonyManager.SIM_STATE_PIN_REQUIRED ){
try {
message += ", PIN Code required" ;
Class clazz = Class.forName(tm.getClass().getName());
if (clazz != null) {
Method m = clazz.getDeclaredMethod("getITelephony");
m.setAccessible(true);
Object iTelephony = m.invoke(tm);
Class params[] = new Class[1];
params[0] = String.class;
Method m2 = iTelephony.getClass().getDeclaredMethod("supplyPin", params);
m2.setAccessible(true);
Object i = m2.invoke(iTelephony, "1111");
Log.d(TAG, m2.toString() + " *** " + i.toString());
}
}catch (Exception e) {
Log.d(TAG,"Impossible to unlock " + e.toString());
e.printStackTrace();
}
}
我得到了这个日志:
07-20 10:31:33.109 1267-1267/eu.cabrera.pinunlocker W/System.err﹕ Caused by: java.lang.SecurityException: Neither user 10032 nor current process has android.permission.MODIFY_PHONE_STATE.
07-20 10:31:33.112 1267-1267/eu.cabrera.pinunlocker W/System.err﹕ at android.os.Parcel.readException(Parcel.java:1546)
07-20 10:31:33.112 1267-1267/eu.cabrera.pinunlocker W/System.err﹕ at android.os.Parcel.readException(Parcel.java:1499)
07-20 10:31:33.112 1267-1267/eu.cabrera.pinunlocker W/System.err﹕ at com.android.internal.telephony.ITelephony$Stub$Proxy.supplyPin(ITelephony.java:1540)
我用普通应用测试过,现在用系统应用测试,同样的问题。
我是不是在做坏事?我的应用程序真的是系统吗?我已将 eu.cabrera.pinunlocker.apk 复制到 /system/app
我需要什么才能授予我的应用 android.permission.MODIFY_PHONE_STATE?
感谢您的帮助。 安托万
您是否尝试将您的应用放到 /system/priv-app?因为如果您需要授予系统权限,/system/priv-app 是您应用的正确位置。只有 /system/priv-app 中的 apk 可以使用 "system" 级权限