【问题标题】:java.lang.SecurityException: Neither user 10032 nor current process has android.permission.MODIFY_PHONE_STATEjava.lang.SecurityException:用户 10032 和当前进程都没有 android.permission.MODIFY_PHONE_STATE
【发布时间】:2015-10-09 07:48:44
【问题描述】:

我正在开发一项在启动设备时自动 PIN/PUK 的服务。 服务在引导时启动。 我将 ITelephony 与反身方法一起使用。 我的手机是 lollipop 5.1.1,它是一个有根的 nexus 5。 我的清单有 Android Studio 说“权限只授予系统应用”

我正在使用这个代码 sn-p :

    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 什么?

感谢您的帮助。 安托万

【问题讨论】:

  • 你用平台证书签名了吗?
  • 不,不知道该怎么做
  • 另外,您为什么要这样做而不是简单地禁用 SIM 卡上的密码?
  • 谢谢,我也会探索这种方式,但我的应用程序最终通过将安装位置更改为 /system/priv-app 而不是 /system/app

标签: android permissions system telephony pin-code


【解决方案1】:

您是否尝试将您的应用程序放到 /system/priv-app 中?因为如果您需要授予系统权限 /system/priv-app 是您的应用程序的正确位置。只有 /system/priv-app 中的 apk 可以使用“系统”级别的权限

【讨论】:

  • 谢谢,这很好用。我使用的是错误位置 /system/app 而不是 /system/priv-app
猜你喜欢
  • 1970-01-01
  • 2017-05-27
  • 2020-10-05
  • 2018-11-17
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 2019-01-09
  • 2018-03-21
相关资源
最近更新 更多