android-如何提取已安装的应用程序名称,程序包名称和可绘制图标的列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android-如何提取已安装的应用程序名称,程序包名称和可绘制图标的列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5990字,纯文字阅读大概需要9分钟。
内容图文
我试图弄清楚如何将这些代码实现到现有的源代码中.目前,我有一些显示所有已安装应用程序的列表视图的源,单击将向该应用程序发送意图.我需要一些有关如何拉动图标并将其添加到列表视图的支持.
任何帮助,源代码编辑,链接等都可以帮助我解决此问题.
谢谢
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>
解决方法:
要获取已安装应用程序的名称和图标,您需要使用Package Manager类,这是一段代码,可让您获取应用程序的名称和图标
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class FetchApplicationsActivity extends Activity {
TextView data;
ImageView image1;
LinearLayout holdlayout;
View l1;
private ArrayList results;
List<ResolveInfo> list;
TextView result;
String str = "";
Drawable icon;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
l1 = findViewById(R.id.Layout1);
results = new ArrayList();
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
list = pm.queryIntentActivities(intent,
PackageManager.PERMISSION_GRANTED);
for (ResolveInfo rInfo : list) {
str = rInfo.activityInfo.applicationInfo.loadLabel(pm).toString()
+ "\n";
results.add(rInfo.activityInfo.applicationInfo.loadLabel(pm)
.toString());
Log.w("Installed Applications", rInfo.activityInfo.applicationInfo
.loadLabel(pm).toString());
icon = rInfo.activityInfo.applicationInfo.loadIcon(pm);
holdlayout = new LinearLayout(getApplicationContext());
holdlayout.setOrientation(LinearLayout.HORIZONTAL);
data = new TextView(getApplicationContext());
data.setText(str);
image1 = new ImageView(getApplicationContext());
image1.setBackgroundDrawable(icon);
((ViewGroup) holdlayout).addView(image1);
((ViewGroup) holdlayout).addView(data);
((ViewGroup) l1).addView(holdlayout);
}
}
}
编辑-您可以将main.xml定义为
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/Layout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
</LinearLayout>
在这里,我创建了动态文本视图,图像视图和布局以显示名称和图标.您可以创建自己的自定义列表来显示此内容.
Edit2-这是how to create customized list上的一个很好的链接,看起来也为here.我认为这些可以解决问题.
内容总结
以上是互联网集市为您收集整理的android-如何提取已安装的应用程序名称,程序包名称和可绘制图标的列表全部内容,希望文章能够帮你解决android-如何提取已安装的应用程序名称,程序包名称和可绘制图标的列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。