指定为非空的参数为空:参数投影 Content Provider Kotlin
Parameter specified as non-null is null: parameter projection Content Provider Kotlin
我正在尝试从 Kotlin 文件中查询内容提供程序。请看下面的代码:
var URI = Uri.parse("content://myprovider")
var nameUri = Uri.withAppendedPath(URI, "name")
cursor = contentResolver.query(nameUri, null, null, null, null)
当我 运行 这段代码时,出现以下错误
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter projection
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:418)
at android.content.ContentResolver.query(ContentResolver.java:802)
现在,当我检查 ContentResolver class 中的查询方法签名时,就是这样
public final @Nullable Cursor query(@RequiresPermission.Read @NonNull Uri uri,
@Nullable String[] projection, @Nullable String selection,
@Nullable String[] selectionArgs, @Nullable String sortOrder)
如您所见,除 Uri 之外的所有内容都可以为 Nullable,因此从技术上讲,它不应抛出此错误。
此外,我尝试提供投影,但随后它为 selectionArgs 抛出了错误。
请帮忙。提前致谢。
注意: contentResolver 和 nameUri 都不为 null
你能试试这个吗
override fun query(uri: Uri, projection: Array<String>?, selection: String?,
selectionArgs: Array<String>?, sortOrder: String?): Cursor? {
//ur code
return cursor
}
我正在尝试从 Kotlin 文件中查询内容提供程序。请看下面的代码:
var URI = Uri.parse("content://myprovider")
var nameUri = Uri.withAppendedPath(URI, "name")
cursor = contentResolver.query(nameUri, null, null, null, null)
当我 运行 这段代码时,出现以下错误
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter projection
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:418)
at android.content.ContentResolver.query(ContentResolver.java:802)
现在,当我检查 ContentResolver class 中的查询方法签名时,就是这样
public final @Nullable Cursor query(@RequiresPermission.Read @NonNull Uri uri,
@Nullable String[] projection, @Nullable String selection,
@Nullable String[] selectionArgs, @Nullable String sortOrder)
如您所见,除 Uri 之外的所有内容都可以为 Nullable,因此从技术上讲,它不应抛出此错误。
此外,我尝试提供投影,但随后它为 selectionArgs 抛出了错误。
请帮忙。提前致谢。
注意: contentResolver 和 nameUri 都不为 null
你能试试这个吗
override fun query(uri: Uri, projection: Array<String>?, selection: String?,
selectionArgs: Array<String>?, sortOrder: String?): Cursor? {
//ur code
return cursor
}