Я узнаю о контент-провайдере в 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);
}
...
}
Может кто-нибудь, пожалуйста, помогите, Заранее спасибо.