私は電話機の連絡先にアクセスする必要があるアプリケーションを開発しています。このメソッドはスレッド内で実行されます。しかし、アプリが初めて起動したときにクラッシュし、android.permission.READ_CONTACTSまたはandroid.permission.READ_CONTACTSがエラーとして要求されます。エラーが発生したら[OK]を押すとすぐにダイアログが表示されます。それは許可を求める自己を再起動し、正常に動作します。一部の携帯電話では、エラーやダイアログボックスが表示されません。Androidアドレスを読み取る実行時アクセス許可が動作しない
ここで許可が既に
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
== PackageManager.PERMISSION_GRANTED) {
Runnable r = new Runnable() {
@Override
public void run() {
getContacts();
}
};
Thread thread = new Thread(r);
thread.start();
}else{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (shouldShowRequestPermissionRationale(Manifest.permission.READ_CONTACTS)) {
Toast.makeText(this, "Read contacts permission is required to function app correctly", Toast.LENGTH_LONG)
.show();
}
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_READ_CONTACTS);
}
}
を付与されているかどうかを確認するためにonCreateView法上のフラグメント内のコードここでonRequestPermissionsResult方法だからです。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case REQUEST_READ_CONTACTS :
Runnable r = new Runnable() {
@Override
public void run() {
getContacts();
}
};
Thread thread = new Thread(r);
thread.start();
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
ここにAndroidManifest.xmlコードがあります。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.shan.chathuranga.smsscheduler">
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
</manifest>
私は間違っています。マシュマロの下でうまくいく。 requestPermissions
メソッド。
ここにリポジトリへのリンクがありますhttps://[email protected]/chathurangaJ/sms-scheduler.git 私は2週間このままで立ち往生しています。
私はそれをデバッグしようとします。このエラーは、アプリケーションが届くとすぐに取得します
質問/ 40626721/onrequestpermissionsresult-grant-results-always-1/40628014#40628014 –