package com.nabil.radeon.trajectgps; import android.app.SearchManager; import android.content.AsyncQueryHandler; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.provider.BaseColumns; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import java.lang.ref.WeakReference; public class SearchableActivity extends AppCompatActivity { private MyHandler mHandler; private TextView txt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.card_row); txt = (TextView)findViewById(R.id.p_id); Intent intent = getIntent(); if (Intent.ACTION_SEARCH.equals(intent.getAction())) { String query = intent.getStringExtra(SearchManager.QUERY); txt.setText("Searching: "+ query); } else if (Intent.ACTION_VIEW.equals(intent.getAction())) { String uri = intent.getDataString(); txt.setText("Suggestion: "+uri); //mHandler = new MyHandler(this); //mHandler.startQuery(0, null, intent.getData(), null, null, null, null); } } public void updateText(String text){ txt.setText(text); } static class MyHandler extends AsyncQueryHandler { // avoid memory leak WeakReference activity; public MyHandler(SearchableActivity searchableActivity) { super(searchableActivity.getContentResolver()); activity = new WeakReference<>(searchableActivity); } @Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { super.onQueryComplete(token, cookie, cursor); if (cursor == null || cursor.getCount() == 0) return; cursor.moveToFirst(); long id = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID)); String text = cursor.getString(cursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_1)); long dataId = cursor.getLong(cursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID)); cursor.close(); if (activity.get() != null) { activity.get().updateText("onQueryComplete: " + id + " / " + text + " / " + dataId); } } }; }