Android-从不调用进入内容提供程序的查询方法

Android-从不调用进入内容提供程序的查询方法,android,sqlite,uri,Android,Sqlite,Uri,我的android应用程序有问题,我无法解决。我的应用程序使用SQLite作为数据库。问题是从未调用进入ContentProvider的查询方法。当我的碎片被打开时,什么也没有发生。有人能帮我吗?谢谢 我的碎片 public class MensagemListFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> { RecyclerView recyclerView;

我的android应用程序有问题,我无法解决。我的应用程序使用SQLite作为数据库。问题是从未调用进入ContentProvider的查询方法。当我的碎片被打开时,什么也没有发生。有人能帮我吗?谢谢

我的碎片

public class MensagemListFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor>  {

    RecyclerView recyclerView;
    MensagemListAdapter adapter;


    public MensagemListFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        adapter = new MensagemListAdapter();
        getLoaderManager().initLoader(0, null, this);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        final View v = inflater.inflate(R.layout.fragment_mensagem_list, container, false);
        recyclerView = (RecyclerView) v.findViewById(R.id.mensagem_recycler);
        recyclerView.setAdapter(adapter);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        return v;
    }


    @Override
    public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
        return new CursorLoader(getActivity(), MensagemProvider.CONTENT_URI, null, null, null, null);
    }

    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
        adapter.swapCursor(cursor);
    }

    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
        adapter.swapCursor(null);
    }
}
我的内容提供者

public class MensagemProvider extends ContentProvider {

    private DBManager db;

    // Database Columns
    public static final String COLUMN_MENSAGEMID = "MENS_SQ_MENSAGEM";
    public static final String COLUMN_CODIGO = "MENS_CD_CODIGO";
    public static final String COLUMN_DE = "COLA_SQ_COLABORADOR_DE";
    public static final String COLUMN_PARA = "COLA_SQ_COLABORADOR_PARA";
    public static final String COLUMN_DATA_ENVIO = "MENS_DT_ENVIO";
    public static final String COLUMN_SITUACAO = "MENS_IN_SITUACAO";
    public static final String COLUMN_MENSAGEM = "MENS_TX_MENSAGEM";
    public static final String COLUMN_APELIDO_REMETENTE = "USUA_DS_APELIDO_DE";
    public static final String COLUMN_APELIDO_DESTINATARIO = "USUA_DS_APELIDO_PARA";

    public static final String DATABASE_TABLE = "MENSAGEM";

    // Content Provider Uri and Authority
    public static final String AUTHORITY = "br.com.soma.provider.MensagemProvider";
    public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/mensagem");

    // MIME types used for listing amantes or looking up a single amante
    private static final String MENSAGENS_MIME_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + "/vnd.br.com.soma.mensagens";
    private static final String MENSAGEM_MIME_TYPE = ContentResolver.CURSOR_ITEM_BASE_TYPE + "/vnd.br.com.soma.mensagem";

    // UriMatcher stuff
    private static final int LIST_MENSAGEM = 0;
    private static final int ITEM_MENSAGEM = 1;
    private static final int LIST_CONVERSA = 2;

    private static final UriMatcher URI_MATCHER = buildUriMatcher();

    public static final String[] TABLE_COLUMNS = new String[]{
            COLUMN_MENSAGEMID,
            COLUMN_CODIGO,
            COLUMN_DE,
            COLUMN_PARA,
            COLUMN_DATA_ENVIO,
            COLUMN_SITUACAO,
            COLUMN_MENSAGEM
    };

    public static final String TABLE_CREATE =
            "create table " + DATABASE_TABLE + " (" +
                    COLUMN_MENSAGEMID + " integer primary key autoincrement, " +
                    COLUMN_CODIGO + " integer not null, " +
                    COLUMN_DE + " integer not null, " +
                    COLUMN_PARA + " integer not null, " +
                    COLUMN_DATA_ENVIO + " integer not null, " +
                    COLUMN_SITUACAO + " text not null, " +
                    COLUMN_MENSAGEM + " tex not null);";

    @Override
    public boolean onCreate() {
        db = new DBManager(getContext());
        return true;
    }

    /**
     * Builds up a UriMatcher for search suggestion and shortcut refresh
     * queries.
     */
    private static UriMatcher buildUriMatcher() {
        UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
        matcher.addURI(AUTHORITY, "mensagem", LIST_MENSAGEM);
        matcher.addURI(AUTHORITY, "mensagem/conversa", LIST_CONVERSA);
        matcher.addURI(AUTHORITY, "mensagem/#", ITEM_MENSAGEM);
        return matcher;
    }

    /**
    * This method is required in order to query the supported types.
    */
    @Override
    public String getType(Uri uri) {
        switch (URI_MATCHER.match(uri)) {
            case LIST_MENSAGEM:
                return MENSAGENS_MIME_TYPE;
            case LIST_CONVERSA:
                return MENSAGENS_MIME_TYPE;
            case ITEM_MENSAGEM:
                return MENSAGEM_MIME_TYPE;
            default:
                throw new IllegalArgumentException("Unknown Uri: " + uri);
        }
    }

    /**
     * This method is called when someone wants to insert something
     * into our content provider.
     */
    @Override
    public Uri insert(Uri uri, ContentValues values) {
    }

    /**
    * This method is called when someone wants to update something
    * in our content provider.
    */
    @Override
    public int update(Uri uri, ContentValues values, String ignored1,     
        return 0;
    }

    /**
    * This method is called when someone wants to delete something
    * from our content provider.
    */
    @Override
    public int delete(Uri uri, String ignored1, String[] ignored2) {
        return 0;
    }

    /**
     * This method is called when someone wants to read something from
     * our content provider. We'll turn around and ask our database
     * for the information, and then return it in a Cursor.
     */
    @Override
    public Cursor query(Uri uri, String[] ignored1, String selection, String[] selectionArgs, String sortOrder) {

        String[] projection = new String[]{
                COLUMN_MENSAGEMID,
                COLUMN_CODIGO,
                COLUMN_DE,
                COLUMN_PARA,
                COLUMN_DATA_ENVIO,
                COLUMN_SITUACAO,
                COLUMN_MENSAGEM};

        Cursor c;
        switch (URI_MATCHER.match(uri)) {
            case LIST_MENSAGEM:
                StringBuilder builder = new StringBuilder();
                builder.append(" SELECT m1.*, ude.USUA_DS_APELIDO as USUA_DS_APELIDO_DE, upara.USUA_DS_APELIDO as USUA_DS_APELIDO_PARA ");
                builder.append(" FROM MENSAGEM m1 ");
                builder.append("    LEFT JOIN MENSAGEM m2 ON ");
                builder.append("        ( ");
                builder.append("        (m1.COLA_SQ_COLABORADOR_DE = m2.COLA_SQ_COLABORADOR_DE OR m1.COLA_SQ_COLABORADOR_DE = m2.COLA_SQ_COLABORADOR_PARA) ");
                builder.append("          AND ");
                builder.append("        (m1.COLA_SQ_COLABORADOR_PARA = m2.COLA_SQ_COLABORADOR_DE OR m1.COLA_SQ_COLABORADOR_PARA = m2.COLA_SQ_COLABORADOR_PARA) ");
                builder.append("          AND ");
                builder.append("        (m1.MENS_DT_ENVIO < m2.MENS_DT_ENVIO) ");
                builder.append("        ) ");
                builder.append("    INNER JOIN COLABORADOR cde ON (m1.COLA_SQ_COLABORADOR_DE = cde.COLA_SQ_COLABORADOR) ");
                builder.append("    INNER JOIN COLABORADOR cpara ON (m1.COLA_SQ_COLABORADOR_PARA = cpara.COLA_SQ_COLABORADOR) ");
                builder.append("    INNER JOIN USUARIO ude ON (cde.USUA_DS_CHAVE = ude.USUA_DS_CHAVE) ");
                builder.append("    INNER JOIN USUARIO upara ON (cpara.USUA_DS_CHAVE = upara.USUA_DS_CHAVE) ");
                builder.append(" WHERE m2.MENS_CD_CODIGO IS NULL ");
                c = db.getReadableDatabase().rawQuery(builder.toString(), null);
                break;
            case LIST_CONVERSA:
                c = db.getReadableDatabase().query(DATABASE_TABLE, projection, selection, selectionArgs, null, null, sortOrder);
                break;
            case ITEM_MENSAGEM:
                c = db.getReadableDatabase().query(DATABASE_TABLE, projection, COLUMN_MENSAGEMID + "=?", new String[]{Long.toString(ContentUris.parseId(uri))}, null, null, null, null);
                if (c.getCount() > 0) {
                    c.moveToFirst();
                }
                break;
            default:
                throw new IllegalArgumentException("Unknown Uri: " + uri);
        }
        c.setNotificationUri(getContext().getContentResolver(), uri);
        return c;

    }

}

转储由以下内容返回的游标:ContentResolverQueryMessagemProvider.CONTENT\u URI,null,…@pskink,您可以解释更多详细信息吗?使用您的URI调用ContentResolver.query并使用DatabaseUtils.dumpCursor转储游标