package org.getlantern.firetweet.activity.support; import android.content.Intent; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import org.getlantern.firetweet.R; import org.getlantern.firetweet.adapter.ResolveInfoListAdapter; import org.getlantern.firetweet.loader.support.IntentActivitiesLoader; import java.util.List; public class ActivityPickerActivity extends BaseSupportDialogActivity implements LoaderCallbacks<List<ResolveInfo>>, OnItemClickListener { private ResolveInfoListAdapter mAdapter; private ListView mListView; @Override public void onContentChanged() { super.onContentChanged(); mListView = (ListView) findViewById(android.R.id.list); } @Override public Loader<List<ResolveInfo>> onCreateLoader(final int id, final Bundle args) { final Intent intent = getIntent(); final Intent extraIntent = intent.getParcelableExtra(EXTRA_INTENT); final String[] blacklist = intent.getStringArrayExtra(EXTRA_BLACKLIST); return new IntentActivitiesLoader(this, extraIntent, blacklist, 0); } @Override public void onItemClick(final AdapterView<?> parent, final View view, final int position, final long id) { final Intent intent = getIntent(), data = new Intent(); data.putExtra(EXTRA_DATA, mAdapter.getItem(position)); data.putExtra(EXTRA_INTENT, intent.getParcelableExtra(EXTRA_INTENT)); setResult(RESULT_OK, data); finish(); } @Override public void onLoaderReset(final Loader<List<ResolveInfo>> loader) { mAdapter.clear(); } @Override public void onLoadFinished(final Loader<List<ResolveInfo>> loader, final List<ResolveInfo> data) { mAdapter.clear(); if (data != null) { mAdapter.addAll(data); } } @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_activity_picker); mAdapter = new ResolveInfoListAdapter(this); mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(this); getSupportLoaderManager().initLoader(0, null, this); } }