package androidx.plmgrdemo; import java.io.File; import java.util.Collection; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; import android.os.Environment; import android.text.TextUtils; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.Toast; import androidx.pluginmgr.PlugInfo; import androidx.pluginmgr.PluginManager; public class MainActivity extends Activity { // private EditText pluginDirTxt; // private Button pluginLoader; private ListView pluglistView; // private PluginManager plugMgr; private static final String sdcard = Environment .getExternalStorageDirectory().getPath(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText pluginDirTxt = (EditText) findViewById(R.id.pluginDirTxt); Button pluginLoader = (Button) findViewById(R.id.pluginLoader); pluglistView = (ListView) findViewById(R.id.pluglist); plugMgr = PluginManager.getInstance(this); String pluginSrcDir = sdcard + "/Download"; pluginDirTxt.setText(pluginSrcDir); pluglistView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { plugItemClick(position); } }); final Context context = this; pluginLoader.setOnClickListener(new View.OnClickListener() { private volatile boolean plugLoading = false; @Override public void onClick(View v) { final String dirText = pluginDirTxt.getText().toString().trim(); if (TextUtils.isEmpty(dirText)) { Toast.makeText(context, getString(R.string.pl_dir), Toast.LENGTH_LONG).show(); return; } if (plugLoading) { Toast.makeText(context, getString(R.string.loading), Toast.LENGTH_LONG).show(); return; } String strDialogTitle = getString(R.string.dialod_loading_title); String strDialogBody = getString(R.string.dialod_loading_body); final ProgressDialog dialogLoading = ProgressDialog.show( context, strDialogTitle, strDialogBody, true); new Thread(new Runnable() { @Override public void run() { plugLoading = true; try { Collection<PlugInfo> plugs = plugMgr .loadPlugin(new File(dirText)); setPlugins(plugs); } catch (Exception e) { e.printStackTrace(); } finally { dialogLoading.dismiss(); } plugLoading = false; } }).start(); } }); } private void plugItemClick(int position) { PlugInfo plug = (PlugInfo) pluglistView.getItemAtPosition(position); plugMgr.startMainActivity(this, plug.getPackageName()); } private void setPlugins(final Collection<PlugInfo> plugs) { if (plugs == null || plugs.isEmpty()) { return; } final ListAdapter adapter = new PlugListViewAdapter(this, plugs); runOnUiThread(new Runnable() { public void run() { pluglistView.setAdapter(adapter); } }); } }