TelephonyManager在android studio上崩溃

jas*_*son 2 android telephonymanager

我已经将我的日食代码转移到了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" />
Run Code Online (Sandbox Code Playgroud)

类:

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();
        }
    }


}
Run Code Online (Sandbox Code Playgroud)

logcat的:

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)
Run Code Online (Sandbox Code Playgroud)

Nan*_*oka 10

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

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

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