我遇到了错误:
Permission Denial:writing`com.android.provider.telephony.smsprovider uri content://sms/472 from pid=11211, uid=10142 requires
android.permission.write_sms, or granturipermission()
请帮助我解决这个问题。
我的代码是:
public void deleteSMS()
{
Uri inboxUri = Uri.parse("content://sms/inbox");
int count = 0;
Cursor c = getContentResolver().query(inboxUri , null, null, null, null);
while (c.moveToNext()) {
try {
// Delete the SMS
String pid = c.getString(0); // Get id;
String uri = "content://sms/" + pid;
count =getContentResolver().delete(Uri.parse(uri),
null, null);
Toast.makeText(getApplicationContext(),"message deleted successfully..!"+count, 5000).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.toString(), 5000).show();
}
}}
Added Permission in manifest file:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE"/>
<receiver android:name=".receiver.SMSReceiver" android:enabled="true">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
我添加了所有权限,但是我仍然没有得到答案,并且显示同样的错误...
您说的是在4.2.2上运行代码,而无需请求许可。但是要删除SMS
,必须在AndroidManifest.xml
中添加这些权限:
<uses-permission android:name="android.permission.WRITE_SMS"> </ uses-permission>
<uses-permission android:name="android.permission.READ_SMS"> </ uses-permission>
您错过了READ_SMS
许可,在删除操作之前,您必须执行需要它的操作。
您是否允许在清单中阅读短信?如果您在Android 6.0及以上进行测试,则必须在运行时提供许可。
读取联系人的示例:
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS) !=
PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
}
else {
ActivityCompat.requestPermissions(
thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
}
}
在Android 6.0(棉花糖)及以上您必须在运行时获得许可。
requestPermissions(new String[]{Manifest.permission.READ_SMS}, 1).
检查您是否已获得许可。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.checkSelfPermission(
getActivity(), Manifest.permission.READ_SMS) ==
PackageManager.PERMISSION_GRANTED)
{