問題タブ [runtime-permissions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Android > 6.0 では、ギャラリーからの画像への 2 回目のアクセス中に Security Permission Exception が発生する
私はAndroidを初めて使用し、Androidの既存のプロジェクトで作業しています.Androidバージョン> 6.0でアプリがクラッシュしていますが、以下の例外があります.基本的にアプリはギャラリーから写真を選択しています.アプリがクラッシュし、許可拒否の例外が発生します。
java.lang.SecurityException: 権限の拒否: com.google.android.apps.photos.contentprovider.MediaContentProvider uri content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F% の読み取り2Fmedia%2Fexternal%2Fimages%2Fmedia%2F1022/ORIGINAL/NONE/256350537 (pid=7789、uid=10145 から) では、プロバイダーをエクスポートするか、grantUriPermission() が必要です。
私はいくつかのリンクを調べて、アンドロイドが実行時のアクセス許可を導入していることを確認し、以下のコードを使用して実行時のアクセス許可を確認しました。
これまでに試したこと...
- マニフェストに許可を追加しました。
2.コードから実行時のアクセス許可を確認します。
}
そして、クラッシュしている行は次のとおりです:-
以下は、マイ マニフェストで使用されるアクセス許可です。
android - Android ランタイム権限
API 23+ と互換性のあるアプリを作成するために、ランタイム権限を追加しようとしています。ドキュメントを確認しましたが、次の行を含めるだけで
private final int hasWriteFilePermission = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE);
、
アプリがクラッシュし、次のエラーが表示されます。
私のコードは次のとおりです。
フラグメント内の許可を確認するにはどうすればよいですか? このエラーの原因は何ですか? この問題を解決するにはどうすればよいですか? ありがとう!
android - wav ファイルの記録と再生: エラー (1, -2147483648) および (-38, 0) (API 23 ランタイム許可?)
Android デバイスの外部ストレージから、AudioRecord クラスを使用して録音した .wav ファイルを再生しようとしています。再生/一時停止と停止の 2 つのボタンがあります。他のSOの投稿を読みましたが、問題を解決できませんでした。
私のコードは次のとおりです。
記録ボタンの私のコード:
ヘッダ:
記録したばかりのファイルの 1 つを選択して再生を押すと、次のエラーが表示されます。
(-38,0) が状態に関連していることはわかっていますが、修正に問題があります。同じコードは API 19 で正常に動作していましたが、API 23 でこのエラーをスローしています。エラー (1、-2147483648) は、アプリがファイルを読み取るための適切なアクセス許可を持っていないためである可能性があることをいくつかの SO 投稿で読みました。しかし、私は問題を解決できませんでした。どこが間違っているのか、API 23 用に何か追加する必要があるのかどうかわかりません。これは、mediaPlayer が外部ストレージからファイルを読み取るときの実行時のアクセス許可に関連している可能性がありますか? その場合、どこに許可を求めればよいでしょうか。wavファイルを転送してパソコンで再生したところ、ちゃんと録音されていました。
更新:別の wav ファイルを使用して、mediaRecord クラスと条件が適切に機能しているかどうかを確認しました。問題は、アプリが記録し、wavとして保存しているファイルのみが読み取れないことであることに気付きました(ただし、コンピューターでは正常に再生できます)。ランタイム権限をチェックせずにAPI 19で同じ方法で記録していたので、わかりません。
更新 2:reset
停止ボタンonClickListener
でメソッドを呼び出し、onCompletionListener
データ ソースをリセットする必要がありました。また、記録したファイルの 1 つをコンピューターにコピーし、名前を から2016-07-10 22:39:40_Recording.wav
に変更しblabla.wav
て元に戻しました。それはうまくいきました。ただし、同様の日付と時刻の名前形式を持つ他の種類のファイルを読み取ることはできます。問題が名前だけにあるのかどうかはわかりません。
この問題に関するヘルプをいただければ幸いです。
android - マシュマロで実行時のアクセス許可を求めるのをスキップできますか?
これは私にとって非常に興味深いことです。私は主に実行時アクセス許可について知っており、実行時アクセス許可が提案された理由をよく知っていますか? どのように使用できますか?しかし、この実行時の許可の問題が原因で発生する問題に関するこの質問では、この問題を解決するためのかなり新しい方法を提案した男がいます。
同じ質問に対するU.swapの回答を参照してください。ここにその回答があります。
この男は、ユーザーがアクセス許可を一度だけ承認する必要があり、残りの人生ですべてのランタイムアクセス許可を心配する必要がなく、コメントで説明されているように、アプリケーションがマシュマロバージョンとプレマシュマロバージョンで実行されるという、素晴らしく実用的なソリューションを提案しました私とCommonswareの間で議論されたすべてのコメント。
@NiteshPareek: この回答について、Android 6.0 以降のデバイスでのアプリの実行を妨げるものは何もありません -Commonsware
しかし、これは、ランタイム許可によって提案されたセキュリティを購入できることを意味しますか? @CommonsWare – タパンパルマー
@Tapanparmar: いいえ、ユーザーは [設定] で権限を手動で取り消すことができるためです。targetSdkVersion が 22 以下であるということは、アプリに実行時のパーミッション コードがないことを意味するため、ユーザーはインストール時に要求されたパーミッションに同意する必要があります。これが、Android が最初から機能していた方法です。– コモンズウェア
許可を表示せずにアプリがマシュマロで実行されますか? @CommonsWare - タパン・パーマー
@Tapanparmar: アプリのインストール時にユーザーに権限が表示されます。– コモンズウェア
わかりましたので、これによって提供されるおかしなアクセス許可をスキップできますが、それを行うことで何か欠点はありますか? @コモンズウェア
@Tapanparmar: ユーザーは、事前にすべての権限を付与することを好まない場合、アプリをインストールしないことを選択できます。また、より高い targetSdkVersion 値に基づいて必要なその他の動作が失われる可能性があります。さらに懸念がある場合は、別のスタック オーバーフローの質問をしてください。– コモンズウェア
だから私は知りたいこれを行うことの実際の欠点はありますか? そして、 RunTimePermissionsの主な目的であったセキュリティはどうなりますか。そして、これを行うことが本当に望ましいのでしょうか?
ここの回答に関するコメントを参照するか、下の画像を参照してください
android - 実行時に Action_Call インテントを使用して権限を付与する
このコードを使用すると、ユーザーをダイヤル画面に送信するのは非常に簡単です
ただし、ユーザーがボタンをクリックして自動的に電話をかけたい場合は、ボタンをクリックすると自動的に電話をかける必要があります。android.permission.CALL_PHONEで設定しました 。以下のコードを使用します....
startActivity(callIntent);の下に波線が表示されます。「呼び出しには、ユーザーが拒否する可能性のある許可が必要です。許可が利用可能かどうかを明示的に確認するコード」と述べています。実行時に実行するにはどうすればよいですか?
android - 権限グループが機能しない
ユーザーによって android.permission.RECEIVE_SMS が付与された後、私のアプリはユーザーの SMS を読み取ります
が、一部のユーザーはクラッシュします (発生させることはできません)。
android.permission.RECEIVE_SMS と android.permission.READ_SMS の両方が AndroidManifest.xml で宣言されており、それらは同じ権限グループです ( https://developer.android.com/guide/topics/security/permissions.html )
詳細なクラッシュ レポート:
助けが必要です、ありがとう
android - PermissionDispatcher を使用して Android のリスト アダプタを介して RuntimePermission を要求するにはどうすればよいですか?
アクティビティとフラグメントからランタイム許可にアクセスできますが、SEND_SMS 許可が必要BaseAdapter
ですFragment
。それは可能ですか、それとも Fragment を介して呼び出す必要がありsetonItemClickListener
ますか?