Wie man die Liste der installierten Apps, des Paketnamens und des zu zeichnenden Symbols abruft
Ich versuche herauszufinden, wie ich diesen Code in meinen vorhandenen Quellcode implementieren kann. Derzeit habe ich eine Quelle, die eine Listenansicht aller installierten Apps anzeigt und durch Klicken Absichten an die Anwendung sendet. Ich benötige Unterstützung beim Ziehen des Symbols und Hinzufügen dieses Symbols zur Listenansicht.
Hilfe, Quellcode-Bearbeitung, Links usw. helfen mir, dieses Problem zu beheben.
Vielen Dank
ListInstalledActivitiesActivity
public class ListInstalledActivitiesActivity extends ListActivity {
// Buffer used to store package and class information, and also determine the number of installed activities
private ArrayList<String[]> _activitiesBuffer = null;
// Buffers for package and class information
private String[] _packages = null;
private String[] _classes = null;
// Index used to fill buffers
private int _index = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main3);
// Get all installed activities (package and class information for every activity)
getAllInstalledActivities();
// Set content to GUI
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, _classes));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
// Add listener
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When clicked, show a toast with the selected activity
Toast.makeText(
getApplicationContext(),
((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
// When clicked, start selected activity, if allowed or possible
try {
Intent intent = new Intent().setClassName(
_packages[position], // package
_classes[position]); // class
startActivity(intent);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Unable to start selected application.", Toast.LENGTH_SHORT);
}
} // public void onItemClick(AdapterView<?> parent, View view, int position, long id)
});
} // public void onCreate(Bundle savedInstanceState)
/*
* Get all installed activities
*/
private void getAllInstalledActivities() {
// Initialize activities buffer
_activitiesBuffer = new ArrayList<String[]>();
final Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> pkgAppsList = getPackageManager().queryIntentActivities( intent, 0);
Iterator<ResolveInfo> iterator1 = pkgAppsList.iterator();
while (iterator1.hasNext()) {
ResolveInfo resolveInfo = iterator1.next();
String[] buf = new String[] {
resolveInfo.activityInfo.packageName,
resolveInfo.activityInfo.name};
_activitiesBuffer.add(buf);
} // while (iterator1.hasNext())
_packages = new String[_activitiesBuffer.size()];
_classes = new String[_activitiesBuffer.size()];
Iterator<String[]> iterator2 = _activitiesBuffer.iterator();
while (iterator2.hasNext()) {
String[] buf = iterator2.next();
// Store package information
_packages[_index] = buf[0];
// Store class information
_classes[_index] = buf[1];
_index++;
} // while (iterator2.hasNext())
} // private void getAllInstalledActivities()
}
main3.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<!-- <ImageView -->
<!--android:id="@+id/ImageView02" -->
<!--android:layout_width="fill_parent" -->
<!--android:layout_height="wrap_content" -->
<!--android:layout_marginBottom="10dp" -->
<!--android:paddingBottom="5dp" -->
</LinearLayout>