[解決済み] Androidのパーミッションを宣言しても動作しない
2022-04-20 21:26:38
質問
AndroidアプリからSMSを送信するコードを書こうとしているのですが、SMSを送信しようとするとエラーが返ってきます。
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)
確認しましたが、マニフェストのパーミッションは以下の通りです。
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-feature android:name="android.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>
ネットで検索してみましたが、エラーはすべて
<uses-permission/>
の構文について教えてください。
どのように解決するのですか?
<サブ (から抜粋したものです。 この件に関する私のブログ記事 )
現在、許可が下りない大きな理由は
あなたのプロジェクトには
targetSdkVersion
が 23 以上で、かつ、その許可が
は危険です。Android 6.0では、以下のようなものがあります。
-
ACCEPT_HANDOVER
-
ACCESS_BACKGROUND_LOCATION
-
ACCESS_MEDIA_LOCATION
-
ACTIVITY_RECOGNITION
-
ANSWER_PHONE_CALLS
-
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以上のアプリ
が必要です。
<uses-permission>
要素が必要ですが
Android 6.0以上では、実行時にユーザーから許可を得る必要があります。
のようなメソッドを使用して、実行時にユーザーに許可を求めます。
checkSelfPermission()
と
requestPermissions()
.
一時的な回避策として
targetSdkVersion
を23以下にする。
しかし、いずれは、何らかの理由であなたの
targetSdkVersion
を 23 以上にする必要があります。その時、あなたは
新しいランタイムパーミッションシステムを使用するようにアプリを調整する必要があります。
Androidのドキュメントには
このトピックを扱ったページ
.
関連
-
java の例外が発生しました java
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
Spring Boot による HTTPS アクセスの設定
-
プロジェクトの依存関係を解決できなかった 解決
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
このラインで複数のマーカーを解決する方法
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
[解決済み] Androidアプリケーションからインターネットにアクセスするには、どのような権限が必要ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
Exception: java.util.NoSuchElementException: 行が見つかりません