package com.prolificinteractive.chandelier.sample;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String CATEGORY_SAMPLE = "com.prolificinteractive.chandelier.sample.SAMPLE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
RecyclerView list = (RecyclerView) findViewById(android.R.id.list);
list.setLayoutManager(new LinearLayoutManager(this));
list.setAdapter(new SampleAdapter(this, getAllSampleActivities()));
}
private List<ResolveInfo> getAllSampleActivities() {
Intent filter = new Intent();
filter.setAction(Intent.ACTION_RUN);
filter.addCategory(CATEGORY_SAMPLE);
return getPackageManager().queryIntentActivities(filter, 0);
}
private class SampleAdapter extends RecyclerView.Adapter<SampleAdapter.SampleViewHolder> {
private final List<ResolveInfo> samples;
private final LayoutInflater inflater;
private final PackageManager pm;
public SampleAdapter(Context context, List<ResolveInfo> resolveInfos) {
this.samples = resolveInfos;
this.inflater = LayoutInflater.from(context);
this.pm = context.getPackageManager();
}
@Override public SampleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
return new SampleViewHolder(view);
}
@Override public void onBindViewHolder(SampleViewHolder holder, int position) {
holder.activityName.setText(samples.get(position).loadLabel(pm));
}
@Override public int getItemCount() {
return samples.size();
}
class SampleViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView activityName;
public SampleViewHolder(View view) {
super(view);
activityName = (TextView) view.findViewById(android.R.id.text1);
view.setOnClickListener(this);
}
@Override public void onClick(View v) {
ActivityInfo activity = samples.get(getAdapterPosition()).activityInfo;
ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
startActivity(new Intent(Intent.ACTION_VIEW).setComponent(name));
}
}
}
}