首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取我手机上上一次安装的应用程序的包名

提取我手机上上一次安装的应用程序的包名
EN

Stack Overflow用户
提问于 2016-04-26 21:37:08
回答 1查看 430关注 0票数 1

我正在编写一个代码,从我的手机上最后安装的应用程序中提取包名、应用程序名和图标。我可以从应用程序信息中获得应用程序的通用名称和图标,但我似乎不知道如何获得包名。我找到的所有获得包名的代码都给了我应用程序的包名,而不是最后一个安装的应用程序。

似乎我需要找到一个获得包名的方法,在那里我可以将应用程序信息作为参数传递(就像我对应用程序的通用名称和图标所做的那样)。

代码语言:javascript
复制
final PackageManager pm = context.getPackageManager();
ApplicationInfo ai;
try {


ai = pm.getApplicationInfo(intent.getData().getSchemeSpecificPart(), 0);
Log.d("tag_name","Application Info" + ai);


PACKAGE_NAME = context.getApplicationContext().getPackageName();
Log.d("tag_name","Package Name" + PACKAGE_NAME);



} catch (final PackageManager.NameNotFoundException e) {
ai = null;
}


final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");
Log.d("tag_name", "Application NAME" + applicationName);



// http://www.carbonrider.com/2016/01/01/extract-app-icon-in-android/

try {

Drawable icon = context.getPackageManager().getApplicationIcon(ai);
Log.d("tag_name", "ICON" + icon);}
catch (Exception e){}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 21:58:22

首先接收本代码中的所有应用程序:

代码语言:javascript
复制
List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET_META_DATA);

然后用以下代码对包列表进行排序:

代码语言:javascript
复制
 Collections.sort(packages, new Comparator<PackageInfo>() {
                @Override
                public int compare(PackageInfo p1, PackageInfo p2) {
                    return Long.toString(p2.firstInstallTime).compareTo(Long.toString(p1.firstInstallTime));
                }
            });

然后,您可以通过以下方式接收最新安装的应用程序的包名:

代码语言:javascript
复制
packages.get(0).packageName
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36876231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档