title: Failed to find provider info Android
body: <p>Having a weird issue with android where it can't find the path to my content provider.</p>
  
  <p>Here is my manifest &amp; code:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="beaudoin.jonathan.provider.edu"
  android:versionCode="1"
  android:versionName="1.0" &gt;
  
  &lt;uses-sdk
      android:minSdkVersion="21"
      android:targetSdkVersion="21" /&gt;
  
  &lt;application
      android:allowBackup="true"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" &gt;
      &lt;activity
          android:name="beaudoin.jonathan.provider.edu.MainActivity"
          android:label="@string/app_name" &gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.MAIN" /&gt;
  
              &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
          &lt;/intent-filter&gt;
      &lt;/activity&gt;
      &lt;provider
          android:name=".MyProvider"
          android:authorities="beaudoin.jonathan.provider.edu.MyProvider"
          android:exported="true"
          android:multiprocess="true" &gt;
      &lt;/provider&gt;
  &lt;/application&gt;
  &lt;/manifest&gt;
  </code></pre>
  
  <p>Here is the code</p>
  
  <pre><code>package beaudoin.jonathan.provider.edu;
  
  import java.util.HashMap;
  import android.content.ContentProvider;
  import android.content.ContentUris;
  import android.content.ContentValues;
  import android.content.Context;
  import android.content.UriMatcher;
  import android.database.Cursor;
  import android.database.SQLException;
  import android.database.sqlite.SQLiteDatabase;
  import android.database.sqlite.SQLiteOpenHelper;
  import android.database.sqlite.SQLiteQueryBuilder;
  import android.net.Uri;
  
  public class MyProvider extends ContentProvider {
      static final String PROVIDER_NAME = "beaudoin.jonathan.provider.edu.MyProvider"; // use your own path please
      static final String URL = "content://" + PROVIDER_NAME + "/cte";
      static final Uri CONTENT_URI = Uri.parse(URL);
      static final String id = "id";
      static final String name = "name";
      static final int uriCode = 1;
      static final UriMatcher uriMatcher;
      private static HashMap&lt;String, String&gt; values;
      static {
          uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
          uriMatcher.addURI(PROVIDER_NAME, "cte", uriCode);
          uriMatcher.addURI(PROVIDER_NAME, "cte/*", uriCode);
      }
  
      @Override
      public int delete(Uri uri, String selection, String[] selectionArgs) {
          int count = 0;
          switch (uriMatcher.match(uri)) {
              case uriCode:
                  count = db.delete(TABLE_NAME, selection, selectionArgs); break;
              default:
                  throw new IllegalArgumentException("Unknown URI " + uri);
          }
          getContext().getContentResolver().notifyChange(uri, null);
          return count;
      }
  
      @Override
      public String getType(Uri uri) {
          switch (uriMatcher.match(uri)) {
              case uriCode:
                  return "vnd.android.cursor.dir/cte";
              default:
                  throw new IllegalArgumentException("Unsupported URI: " + uri);
          }
      }
  
      @Override
      public Uri insert(Uri uri, ContentValues values) {
          System.out.println(URL);
          long rowID = db.insert(TABLE_NAME, "", values);
          if (rowID &gt; 0) {
              Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
              getContext().getContentResolver().notifyChange(_uri, null);
              return _uri;
          }
          throw new SQLException("Failed to add a record into " + uri);
      }
  
      @Override
      public boolean onCreate() {
          Context context = getContext();
          DatabaseHelper dbHelper = new DatabaseHelper(context);
          db = dbHelper.getWritableDatabase();
          if (db != null) {
              return true;
          }
          return false;
      }
  
      @Override
      public Cursor query(Uri uri, String[] projection, String selection,
                          String[] selectionArgs, String sortOrder) {
          SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
          qb.setTables(TABLE_NAME);
          switch (uriMatcher.match(uri)) {
              case uriCode:
                  qb.setProjectionMap(values);
                  break;
              default:
                  throw new IllegalArgumentException("Unknown URI " + uri);
          }
          if (sortOrder == null || sortOrder == "") {
              sortOrder = name;
          }
          Cursor c = qb.query(db, projection, selection, selectionArgs, null,
                  null, sortOrder);
          c.setNotificationUri(getContext().getContentResolver(), uri);
          return c;
      }
  
      @Override
      public int update(Uri uri, ContentValues values, String selection,
                        String[] selectionArgs) {
          int count = 0;
          switch (uriMatcher.match(uri)) {
              case uriCode:
                  count = db.update(TABLE_NAME, values, selection, selectionArgs);
                  break;
              default:
                  throw new IllegalArgumentException("Unknown URI " + uri);
          }
          getContext().getContentResolver().notifyChange(uri, null);
          return count;
      }
  
      private SQLiteDatabase db;
      static final String DATABASE_NAME = "mydb";
      static final String TABLE_NAME = "names";
      static final int DATABASE_VERSION = 1;
      static final String CREATE_DB_TABLE = " CREATE TABLE " + TABLE_NAME
              + " (id INTEGER PRIMARY KEY AUTOINCREMENT, "
              + " name TEXT NOT NULL);";
  
      private static class DatabaseHelper extends SQLiteOpenHelper {
          DatabaseHelper(Context context) {
              super(context, DATABASE_NAME, null, DATABASE_VERSION);
          }
          @Override
          public void onCreate(SQLiteDatabase db) {
              db.execSQL(CREATE_DB_TABLE);
          }
  
          @Override
          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
              db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
              onCreate(db);
          }
      }
  }
  </code></pre>
  
  <p>And here is where I load my provider.</p>
  
  <pre><code>@Override
  public Loader&lt;Cursor&gt; onCreateLoader(int arg0, Bundle arg1) {
      cursorLoader= new CursorLoader(this, Uri.parse("content://beaudoin.jonathan.provider.edu.MyProvider/cte"), null, null, null, null);
      return cursorLoader;
  }
  </code></pre>
  
  <p>This is the error I'm getting</p>
  
  <pre><code>11-18 19:28:45.643 13969-14269/beaudoin.jonathan.provider.edu E/ActivityThread: Failed to find provider info for beaudoin.jonathan.provider.edu.MyProvider
  </code></pre>
  
  <p>I've went through each class and manifest to make sure the package names match exactly but I'm still having the issue.</p>