Java.lang.illegalargumentexception неизвестный URL-адрес - PullRequest
0 голосов
/ 30 сентября 2019

Я узнаю о контент-провайдере в Android. Но когда я пытаюсь создать пользовательский контент-провайдер, следуя этому руководству: https://www.tutorialspoint.com/android/android_content_providers.htm, я получаю следующее исключение:

java.lang.IllegalArgumentException: Unknown URL content://com.example.mytest/students

Манифест:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <provider   android:name="MyContent"
                android:exported="false"
                android:enabled="true"
                android:grantUriPermissions="true"
                android:label="MyContent"
                android:readPermission="com.example.mytest.READ_DATABASE"
                android:writePermission="com.example.mytest.WRITE_DATABASE"
                android:authorities="come.example.mytest"/>
</application>

Подкласс класса ContentProvider с CONTENT_URI и AUTHORITY:

public class MyContent extends ContentProvider {
     static final String AUTHORITY = "com.example.mytest";
     static final String CONTENT_PATH = "students";
     static final String URL = "content://"+AUTHORITY+"/"+CONTENT_PATH;
     static final Uri   CONTENT_URI     = Uri.parse(URL);
     ...
}

Коды, где произошло исключение:

try{
        Uri uri = contentResolver.insert((MyContent.CONTENT_URI), values);
        Toast.makeText(getApplicationContext(), uri.toString(), Toast.LENGTH_LONG).show();
    }catch(Exception e){
        Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
    }

Тогда я решил исследовать, где проблема начинается с изученияКласс ContentResolver https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/content/ContentResolver.java но это приводит к другому исключению: UnsupportedOperationException

public static final String SCHEME_CONTENT = "content";
/** {@hide} */
public static @NonNull ContentResolver wrap(@NonNull ContentInterface wrapped) {
    Preconditions.checkNotNull(wrapped);

    return new ContentResolver(null, wrapped) {
        @Override
        public void unstableProviderDied(IContentProvider icp) {
            throw new UnsupportedOperationException();
        }
        @Override
        public boolean releaseUnstableProvider(IContentProvider icp) {
            throw new UnsupportedOperationException();
        }
        @Override
        public boolean releaseProvider(IContentProvider icp) {
            throw new UnsupportedOperationException();
        }
        @Override
        protected IContentProvider acquireUnstableProvider(Context c, String name) {
            throw new UnsupportedOperationException();
        }
        @Override
        protected IContentProvider acquireProvider(Context c, String name) {
            throw new UnsupportedOperationException();
        }
    };
}
@UnsupportedAppUsage
public final IContentProvider acquireProvider(Uri uri) {
    final String auth = uri.getAuthority();
    if (auth != null) {
        return acquireProvider(mContext, auth);
    }
    return null;
}
@Override
public final @Nullable Uri insert(@RequiresPermission.Write @NonNull Uri url,
            @Nullable ContentValues values) {
    ...
    IContentProvider provider = acquireProvider(url);
    if (provider == null) {
        throw new IllegalArgumentException("Unknown URL " + url);
    }
    ...
}

Может кто-нибудь, пожалуйста, помогите, Заранее спасибо.

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