gpt4 book ai didi

android - 如何获取android中所有非系统应用程序的列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:20 26 4
gpt4 key购买 nike

我正在开发一个应用程序,我想在其中获取所有非系统应用程序的列表。这是我的代码部分:

TextView tv = new TextView(this);
this.setContentView(tv);

ActivityManager actvityManager = (ActivityManager)
this.getSystemService( ACTIVITY_SERVICE );
PackageManager pm = this.getPackageManager();
List<PackageInfo> list =pm.getInstalledPackages(0);

for(int i=0;i<list.size();i++)
{
System.out.println("list"+i+" "+list.get(i));
}

for(PackageInfo pi : list)
{
try
{
ApplicationInfo ai=pm.getApplicationInfo(pi.packageName, 0);

if (ai.sourceDir.startsWith("/data/app/"))
{
tv.setText(ai.className);// non system apps
}
else
{
System.out.println("system apps");// system apps
}
}
catch(Exception e)
{
e.printStackTrace();

}
}

但它显示,所有应用程序都是系统应用程序

最佳答案

如果一个应用程序是一个非系统应用程序,它必须有一个可以启动它的启动 Intent 。如果启动 Intent 为空,那么它是一个系统应用程序。

系统应用示例:“com.android.browser.provider”、“com.google.android.voicesearch”。

对于上述应用程序,当您查询启动 Intent 时,您将获得 NULL。

PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo packageInfo:packages){
if( pm.getLaunchIntentForPackage(packageInfo.packageName) != null ){
String currAppName = pm.getApplicationLabel(packageInfo).toString();
//This app is a non-system app
}
else{
//System App
}
}

关于android - 如何获取android中所有非系统应用程序的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16712450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com