Параметр, указанный как ненулевой, имеет значение null: параметр проекции Content Provider Kotlin - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь запросить контент-провайдер из файла 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, эточто это такое

public final @Nullable Cursor query(@RequiresPermission.Read @NonNull Uri uri,
        @Nullable String[] projection, @Nullable String selection,
        @Nullable String[] selectionArgs, @Nullable String sortOrder)

Как видите, все, кроме Ури, может иметь значение Nullable, поэтому технически это не должно выдавать эту ошибку.

Кроме того, я попытался дать проекцию, но затем выкинулоошибка для selectionArgs.

Пожалуйста, помогите.Заранее спасибо.

Примечание: Ни contentResolver, ни nameUri не имеют значения

1 Ответ

5 голосов
/ 10 июля 2019

Можете ли вы попробовать это

override fun query(uri: Uri, projection: Array<String>?, selection: String?,
               selectionArgs: Array<String>?, sortOrder: String?): Cursor? {

//ur code

return cursor
}

см. Эту ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...