不能得到的权限 [英] Can't Get the Permission
问题描述
我想从一个Android应用程序发送短信,写了一些code,但是当我尝试发送短信发送我回错误:
I'm trying to send a Sms from an android app, wrote some code but when i try to send the sms it send me back the error :
09-17 18:37:29.974 12847-12847/**.**.****E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: **.**.****, PID: 12847
java.lang.SecurityException: Sending SMS message: uid 10092 does not have android.permission.SEND_SMS.
at android.os.Parcel.readException(Parcel.java:1599)
at android.os.Parcel.readException(Parcel.java:1552)
at com.android.internal.telephony.ISms$Stub$Proxy.sendTextForSubscriber(ISms.java:768)
at android.telephony.SmsManager.sendTextMessageInternal(SmsManager.java:310)
at android.telephony.SmsManager.sendTextMessage(SmsManager.java:293)
at **.**.****.MainActivity$3.onClick(MainActivity.java:70)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我查了一下,但我在清单的权限,如下:
I checked but i have the permissions in the manifest, as following :
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-feature android:name="andrdoi.hardware.telephony"
android:required="true"/>
<application
android:exported="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我在网上搜索,但所有的错误是关于语法,你能帮助我吗?
I searched the internet but all the errors were about the syntax, could you help me please ?
推荐答案
<子>(以下是从的我的这个的一篇博客文章)
(the following is extracted from a blog post of mine about this)
大原因没有得到您的许可,现在是因为
你的项目有一个 targetSdkVersion
23或更高,且许可
您所请求是危险的。在安卓6.0,这包括:
The big reason for not getting your permission nowadays is because
your project has a targetSdkVersion
of 23 or higher, and the permission
that you are requesting is "dangerous". In Android 6.0, this includes:
-
ACCESS_COARSE_LOCATION
-
ACCESS_FINE_LOCATION
-
ADD_VOICEMAIL
-
BODY_SENSORS
-
CALL_PHONE
-
摄像机
-
GET_ACCOUNTS
-
PROCESS_OUTGOING_CALLS
-
READ_CALENDAR
-
READ_CALL_LOG
-
READ_CELL_BROADCASTS
-
READ_CONTACTS
-
READ_EXTERNAL_STORAGE
-
READ_PHONE_STATE
-
READ_SMS
-
RECEIVE_MMS
-
RECEIVE_SMS
-
RECEIVE_WAP_PUSH
-
RECORD_AUDIO
-
SEND_SMS
-
USE_SIP
-
WRITE_CALENDAR
-
WRITE_CALL_LOG
-
WRITE_CONTACTS
-
WRITE_EXTERNAL_STORAGE
ACCESS_COARSE_LOCATION
ACCESS_FINE_LOCATION
ADD_VOICEMAIL
BODY_SENSORS
CALL_PHONE
CAMERA
GET_ACCOUNTS
PROCESS_OUTGOING_CALLS
READ_CALENDAR
READ_CALL_LOG
READ_CELL_BROADCASTS
READ_CONTACTS
READ_EXTERNAL_STORAGE
READ_PHONE_STATE
READ_SMS
RECEIVE_MMS
RECEIVE_SMS
RECEIVE_WAP_PUSH
RECORD_AUDIO
SEND_SMS
USE_SIP
WRITE_CALENDAR
WRITE_CALL_LOG
WRITE_CONTACTS
WRITE_EXTERNAL_STORAGE
有关这些权限,而不是只做你的 targetSdkVersion
23+应用
需要有&LT;采用-许可&GT;
元素(S),但你也有
索要这些权限在运行时从Android的用户6.0+
设备,使用像 checkSelfPermission方法()
和
requestPermissions()
。
For these permissions, not only does your targetSdkVersion
23+ app
need to have the <uses-permission>
element(s), but you also have
to ask for those permissions at runtime from the user on Android 6.0+
devices, using methods like checkSelfPermission()
and
requestPermissions()
.
作为临时解决办法,放下你的 targetSdkVersion
低于23。
As a temporary workaround, drop your targetSdkVersion
below 23.
不过,最终,你将有一些理由来要你的
targetSdkVersion
是23或更高。在那个时候,你需要
调整你的应用程序来使用新的运行许可制度。
而Android 6.0 preVIEW文档具有
一个专门从事这项课题页。
However, eventually, you will have some reason to want your
targetSdkVersion
to be 23 or higher. At that time, you will need
to adjust your app to use the new runtime permission system.
The Android 6.0 preview documentation has
a page dedicated to this topic.
这篇关于不能得到的权限的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!