Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getContentResolver()_Java_Android_Android Permissions_Android Contentresolver - Fatal编程技术网

Java getContentResolver()

Java getContentResolver(),java,android,android-permissions,android-contentresolver,Java,Android,Android Permissions,Android Contentresolver,我想阅读短信使用内容解析器。我在清单文件中添加了如下权限: <uses-permission android:name="android.permission.READ_SMS"/> 但它给出了一个错误: 02-22 02:55:36.429 18963-18963/inc.osi.imossis E/AndroidRuntime: FATAL EXCEPTION: main Process: inc.osi.imossis, PID: 18963 java.lang.Runt

我想阅读短信使用内容解析器。我在清单文件中添加了如下权限:

<uses-permission android:name="android.permission.READ_SMS"/>
但它给出了一个错误:

02-22 02:55:36.429 18963-18963/inc.osi.imossis E/AndroidRuntime: FATAL EXCEPTION: main
 Process: inc.osi.imossis, PID: 18963
 java.lang.RuntimeException: Unable to start activity ComponentInfo{inc.osi.imossis/inc.osi.imossis.MainActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.telephony.SmsProvider uri content://sms/inbox from pid=18963, uid=10059 requires android.permission.READ_SMS, or grantUriPermission()
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
     at android.app.ActivityThread.-wrap11(ActivityThread.java)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     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)
  Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.telephony.SmsProvider uri content://sms/inbox from pid=18963, uid=10059 requires android.permission.READ_SMS, or grantUriPermission()
     at android.os.Parcel.readException(Parcel.java:1599)
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
     at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
     at android.content.ContentResolver.query(ContentResolver.java:491)
     at android.content.ContentResolver.query(ContentResolver.java:434)
     at inc.osi.imossis.MainActivity.onCreate(MainActivity.java:30)
     at android.app.Activity.performCreate(Activity.java:6237)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     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"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="inc.osi.imossis">
    <uses-permission android:name="android.permission.READ_SMS"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>


我该如何解决它?

您是否尝试过清理和重建项目

编辑:您可以尝试在运行时检查并请求权限吗

final private int REQUEST_READ_SMS_ID = 1;  // A constant needed for callback
int hasReadSMSPermission = checkSelfPermission(Manifest.permission.READ_SMS);
if (hasReadSMSPermission != PackageManager.PERMISSION_GRANTED) {
    requestPermissions(new String[] {Manifest.permission.hasReadSMSPermission }, REQUEST_CODE_ASK_PERMISSIONS);
    return;
}`

卸载应用程序并重新安装,然后重试。 因为清单更改有时不会反映在重新安装上

如果我没有错的话,可能是您在安装后修改了清单文件。
试试你的运气,它可能会工作。

所以我在搜索解决方案的两天后发现了问题API 23的Emulator中有一个bug如果其他人遇到这个问题,只需在不同的设备上或API级别为18或19的Emulator上运行它就可以了。谢谢

请显示您的全部清单。@Doug完成请检查您的
目标版本是什么
?你在测试什么版本的Android?@commonware API 19kitkat@Irtza沙汉:试试我的建议,请让我知道它是否对你有效?我尝试了我大脑中的所有东西,可以想一下,但是没有用。android studio中API级别23的模拟器中没有一个bug
final private int REQUEST_READ_SMS_ID = 1;  // A constant needed for callback
int hasReadSMSPermission = checkSelfPermission(Manifest.permission.READ_SMS);
if (hasReadSMSPermission != PackageManager.PERMISSION_GRANTED) {
    requestPermissions(new String[] {Manifest.permission.hasReadSMSPermission }, REQUEST_CODE_ASK_PERMISSIONS);
    return;
}`