【问题标题】:Android studio permission exception although set in manifest尽管在清单中设置了 Android Studio 权限异常
【发布时间】:2015-10-23 16:20:47
【问题描述】:

我刚刚尝试使用 Android Studio 设置我的第一个应用程序(之前使用过 eclipser),但我已经迷路了。

尝试在按钮点击处理程序中获取信号强度:

            TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
            CellInfoGsm GSM = (CellInfoGsm)telephonyManager.getAllCellInfo().get(0);
            CellSignalStrengthGsm cellSignalStrengthGsm = GSM.getCellSignalStrength();
            int signalStrength = cellSignalStrengthGsm.getDbm();
            Log.v(TAG, "signalStrength:" + signalStrength);

清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.kiel.fh......" >
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity android:name=".MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>

错误:

致命异常:主要 10-23 16:01:23.853 12060-12060/de........ E/AndroidRuntime: Process: de........, PID: 12060 10-23 16:01:23.853 12060-12060/de............ E/AndroidRuntime: java.lang.SecurityException: getAllCellInfo: 用户 10059 和当前进程都没有 android.permission.ACCESS_COARSE_LOCATION

【问题讨论】:

  • 您在哪个版本的 Android 上进行测试?您的app/build.gradle 文件中targetSdkVersion 的值是多少?

标签: android exception permissions


【解决方案1】:

如果您的目标是 API 23 并在运行 API 23 的设备上运行,您现在需要在运行时请求用户批准并将其包含在您的清单中。每当您尝试做需要使用权限的事情时,您都需要检查您是否获得了许可,并询问您是否没有。

您可以查看此answer 以获得在运行时必须请求用户批准的权限列表。

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 2016-01-23
    • 1970-01-01
    • 2018-07-17
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多