Back to project page dynamic-load-apk.
The source code is released under:
Apache License
If you think the Android project dynamic-load-apk listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.ryg.dynamicload.sample.mainhost; //w w w . j a va 2 s .c o m import java.io.File; import java.util.ArrayList; import android.app.Activity; import android.content.pm.PackageInfo; import android.os.Bundle; import android.os.Environment; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.ryg.dynamicload.internal.DLIntent; import com.ryg.dynamicload.internal.DLPluginManager; import com.ryg.utils.DLUtils; public class MainActivity extends Activity implements OnItemClickListener { public static final String FROM = "extra.from"; public static final int FROM_INTERNAL = 0; public static final int FROM_EXTERNAL = 1; private ArrayList<PluginItem> mPluginItems = new ArrayList<PluginItem>(); private PluginAdapter mPluginAdapter; private ListView mListView; private TextView mNoPluginTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initView() { mPluginAdapter = new PluginAdapter(); mListView = (ListView) findViewById(R.id.plugin_list); mNoPluginTextView = (TextView)findViewById(R.id.no_plugin); } private void initData() { String pluginFolder = Environment.getExternalStorageDirectory() + "/DynamicLoadHost"; File file = new File(pluginFolder); File[] plugins = file.listFiles(); if (plugins == null || plugins.length == 0) { mNoPluginTextView.setVisibility(View.VISIBLE); return; } for (File plugin : plugins) { PluginItem item = new PluginItem(); item.pluginPath = plugin.getAbsolutePath(); item.packageInfo = DLUtils.getPackageInfo(this, item.pluginPath); if (item.packageInfo.activities != null && item.packageInfo.activities.length > 0) { item.launcherActivityName = item.packageInfo.activities[0].name; } mPluginItems.add(item); DLPluginManager.getInstance(this).loadApk(item.pluginPath); } mListView.setAdapter(mPluginAdapter); mListView.setOnItemClickListener(this); mPluginAdapter.notifyDataSetChanged(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: DLUtils.showDialog(this, getString(R.string.action_about), getString(R.string.introducation)); break; default: break; } return super.onOptionsItemSelected(item); } private class PluginAdapter extends BaseAdapter { private LayoutInflater mInflater; public PluginAdapter() { mInflater = MainActivity.this.getLayoutInflater(); } @Override public int getCount() { return mPluginItems.size(); } @Override public Object getItem(int position) { return mPluginItems.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.plugin_item, parent, false); holder = new ViewHolder(); holder.appIcon = (ImageView) convertView.findViewById(R.id.app_icon); holder.appName = (TextView) convertView.findViewById(R.id.app_name); holder.apkName = (TextView) convertView.findViewById(R.id.apk_name); holder.packageName = (TextView) convertView.findViewById(R.id.package_name); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } PluginItem item = mPluginItems.get(position); PackageInfo packageInfo = item.packageInfo; holder.appIcon.setImageDrawable(DLUtils.getAppIcon(MainActivity.this, item.pluginPath)); holder.appName.setText(DLUtils.getAppLabel(MainActivity.this, item.pluginPath)); holder.apkName.setText(item.pluginPath.substring(item.pluginPath.lastIndexOf(File.separatorChar) + 1)); holder.packageName.setText(packageInfo.applicationInfo.packageName); return convertView; } } private static class ViewHolder { public ImageView appIcon; public TextView appName; public TextView apkName; public TextView packageName; } public static class PluginItem { public PackageInfo packageInfo; public String pluginPath; public String launcherActivityName; public PluginItem() { } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { PluginItem item = mPluginItems.get(position); DLPluginManager pluginManager = DLPluginManager.getInstance(this); pluginManager.startPluginActivity(this, new DLIntent(item.packageInfo.packageName, item.launcherActivityName)); } }