android - TelephonyManager 在 android studio 上崩溃

标签 android telephonymanager

我已将我的 eclipse 代码转移到 android studio,我尝试在 studio 上执行该项目,但它在 TelephonyManager 上崩溃了。我在 Theme.Holo.Light 上创建了旧代码。

我已添加权限:

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


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- Required to show current location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

类:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        final TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
        final String tmDevice, tmSerial, androidId;
        if (tm.getDeviceId() != null) {
            tmDevice = "" + tm.getDeviceId();
            tmSerial = "" + tm.getSimSerialNumber();
            androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
            UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());

            String appdeviceId = deviceUuid.toString();

            Toast.makeText(getBaseContext(),appdeviceId,Toast.LENGTH_LONG).show();
        }
    }


}

日志:

java.lang.RuntimeException: Unable to start activity ava.lang.SecurityException: Neither user 10101 nor current process has android.permission.READ_PHONE_STATE.
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.SecurityException: Neither user 10101 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.internal.telephony.ITelephony$Stub$Proxy.getDeviceId(ITelephony.java:3692)
            at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:624)
            at example.com.telephoney_manager_test.MainActivity.onCreate(MainActivity.java:24)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)

最佳答案

我在 Android Studio(1.4 Beta 4)和运行 Android M 预览版的 Nexus 6 上有这个主题。

我可以通过运行一次应用程序(收到异常)来解决这个问题,然后转到设置 -> 应用程序 -> 我的应用程序 -> 权限显示(惊喜,惊喜!)所有请求的权限和所有权限都已关闭.

然后我手动打开所有权限并再次从 Android Studio 启动应用程序。从那时起,权限问题就消失了。

关于android - TelephonyManager 在 android studio 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32332878/

相关文章:

android - Android 中基于字段查询 Firebase 并返回父级

android - 如何获取安卓手机的电话号码?

android - 如何在 android 中解决此错误 "com.android.internal.telephony cannot be resolved to a type"

android - 以编程方式检查 PIN 锁定是否在 Android 中处于 Activity 状态

Android - 如何打开免提电话和最大通话音量

android - 由于 java.lang.IllegalArgumentException : column '_id' does not exist,应用程序在启动时崩溃

java - 如何从java(android)中的月份中获取星期几?

android - TextView 中的镜像文本?

java - eclipse 中的 Strings.xml 和 values-es - 支持多种语言

android - 在所有android设备中获取多个imei号码