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" /> 
  • Error "HTTP / 1.1 401 no autorizado" con autenticación básica en android - EWS 2010
  • Android con intenciones de controlar reproductor multimedia?
  • Android: activity_main no se puede resolver o no es un campo
  • Convertir cadena a JSON array
  • No se puede analizar la plantilla "Clase" Error siempre que intento abrir una nueva clase java
  • HttpURLConnection de Android: controla los redireccionamientos de HTTP
  • Cómo obtener ayuda para el lector Emulación de tarjeta basada en host
  • Android - Cómo descargar los datos en segundo plano en determinados momentos
  • SetNumStars y setRating no funcionan en RatingBar personalizado
  • Agregar contenido al cuadro de diálogo de feed de Facebook con el nuevo SDK de Facebook para Android
  • Costo de invocar un método en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.