IllegalArgumentException: Unknown Contenido de URL: // CONTENT

IllegalArgumentException: Unknown Contenido de la URL: //

^ Tener una pesadilla con lo anterior. He comprobado mis variables y caminos pero no puedo ver cuál es el problema? ¡Apreciamos mucho cualquier puntero!

Aquí está mi rastro.

java.lang.IllegalArgumentException: Unknown URL content://com.purewowstudio.topmovies.data.FilmProvider/film_data at android.content.ContentResolver.insert(ContentResolver.java:1203) at com.purewowstudio.topmovies.data.DatabaseHelper.addFilm(DatabaseHelper.java:52) at com.purewowstudio.topmovies.fragments.FilmList$getFilms.onPostExecute(FilmList.java:72) at com.purewowstudio.topmovies.fragments.FilmList$getFilms.onPostExecute(FilmList.java:62) at android.os.AsyncTask.finish(AsyncTask.java:632) at android.os.AsyncTask.access$600(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5262) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 

Proveedor de contenido

 public class FilmProvider extends ContentProvider { public static final String TABLE_NAME = "film_data"; public static final String AUTHORITY = "com.purewowstudio.topmovies.data.FilmProvider"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + TABLE_NAME); public static final int FILMS = 1; public static final int FILMS_ID = 2; public static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH); static { sURIMatcher.addURI(AUTHORITY, TABLE_NAME, FILMS); sURIMatcher.addURI(AUTHORITY, TABLE_NAME + "/#", FILMS_ID); } private DatabaseHelper mDB; public boolean onCreate() { mDB = new DatabaseHelper(getContext(), null, null, 1); return false; } @Override public String getType(Uri uri) { return null; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); queryBuilder.setTables(MovieDataContract.TABLE_NAME); int uriType = sURIMatcher.match(uri); switch (uriType) { case FILMS_ID: queryBuilder.appendWhere(MovieDataContract.FilmEntry._ID + "=" + uri.getLastPathSegment()); break; case FILMS: break; default: throw new IllegalArgumentException("Unknown URI"); } Cursor cursor = queryBuilder.query(mDB.getReadableDatabase(), projection, selection, selectionArgs, null, null, sortOrder); cursor.setNotificationUri(getContext().getContentResolver(), uri); return cursor; } @Override public Uri insert(Uri uri, ContentValues values) { int uriType = sURIMatcher.match(uri); SQLiteDatabase sqlDB = mDB.getWritableDatabase(); long id = 0; switch (uriType) { case FILMS: id = sqlDB.insert(MovieDataContract.TABLE_NAME, null, values); break; default: throw new IllegalArgumentException("Unknown URI: " + uri); } getContext().getContentResolver().notifyChange(uri, null); return Uri.parse(MovieDataContract.TABLE_NAME + "/" + id); } 

Clase DatabaseHelper

  public class DatabaseHelper extends SQLiteOpenHelper { private ContentResolver myCR; public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, MovieDataContract.DATABASE_NAME, factory, MovieDataContract.DATABASE_VERSION); myCR = context.getContentResolver(); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(MovieDataContract.FilmEntry.SQL_CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(MovieDataContract.FilmEntry.DELETE_TABLE); onCreate(db); } public void addFilm(Film film){ SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(MovieDataContract.FilmEntry.COLUMN_FILM_TITLE, film.getTitle()); values.put(MovieDataContract.FilmEntry.COLUMN_FILM_RATING, film.getRating()); values.put(MovieDataContract.FilmEntry.COLUMN_FILM_RUNTIME, film.getRuntime()); values.put(MovieDataContract.FilmEntry.COLUMN_FILM_CRITICS, film.getCritics()); values.put(MovieDataContract.FilmEntry.COLUMN_FILM_AUDIENCE, film.getAudience()); values.put(MovieDataContract.FilmEntry.COLUMN_FILM_SYNOPSIS, film.getSynopsis()); values.put(MovieDataContract.FilmEntry.COLUMN_FILM_PROFILE, film.getProfile()); myCR.insert(FilmProvider.CONTENT_URI, values); db.insert(MovieDataContract.TABLE_NAME, null, values); db.close(); } 

Manifiesto

 <?xml version="1.0" encoding="utf-8"?> 

 <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/TopMoviesTheme" > <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> <activity android:name=".DetailFragment" android:label="@string/title_activity_detail_fragment" android:parentActivityName=".MainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.purewowstudio.topmovies.MainActivity" /> <provider android:name=".data.filmProvider" android:authorities="com.purewowstudio.topmovies.data.filmProvider" android:exported="true"> </provider> </activity> </application> </manifest> 

2 Solutions collect form web for “IllegalArgumentException: Unknown Contenido de URL: // CONTENT”

Primero, mueva <provider> para ser un hijo de <application> , no <activity> .

En segundo lugar, cambie android:exported="true" a android:exported="false" , hasta que asegure su ContentProvider . En su estado actual, una vez que corrija la ubicación del elemento <provider> como se indicó anteriormente, cualquier aplicación puede leer y escribir algo en su proveedor, lo cual es poco probable que sea lo que el usuario desea.

He añadido el nombre del paquete en las autoridades. Por eso tengo este problema. Tengo que agregar el Provider name en las authorities .

  <provider android:name="LoginContentProvider" android:authorities="com.provider.name.team" android:exported="false" /> 
  • Android Studio: ¿dónde está la lista de funciones?
  • ¿Por qué se incluirían dependencias sólo en versiones de lanzamiento?
  • StandardCharsets.UTF_8 en API inferior a 19
  • Problema de creación de diseño de Android
  • La aplicación o la actividad lleva tiempo para cargarse algunas veces
  • En una lista de array, se agrega nueva variable y reemplaza los valores existentes por uno nuevo
  • ¿Cómo puedo determinar las coordenadas de longitud y latitud para crear un radio de 1 milla alrededor de la ubicación de un usuario?
  • Subida de archivos con okhttp
  • Esperando la entrada táctil sin bloquear el hilo del juego
  • Javapoet superclase genérico
  • Libgdx MainMenuScreen
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.