我需要知道一些默认 Android 应用程序的规范名称,例如电子邮件、联系人和其他应用程序。我希望能够使用它们的规范名称来启动它们。
像
Intent i = new Intent("com.pacakge.canonicalname");
那么有什么想法可以让我获得默认 Android 应用程序的规范包名称列表吗?
谢谢
我需要知道一些默认 Android 应用程序的规范名称,例如电子邮件、联系人和其他应用程序。我希望能够使用它们的规范名称来启动它们。
像
Intent i = new Intent("com.pacakge.canonicalname");
那么有什么想法可以让我获得默认 Android 应用程序的规范包名称列表吗?
谢谢
PackageManager 类中有一个名为 currentToCanonicalPackageNames(String[] names) 的方法,我怀疑它可用于执行您的要求。所以像:
String[] names = {"Email","Contacts"};
try{
String[] canonicalNames = context.getPackageManager().currentToCanonicalPackageNames(names);
//do whatever you want with canonicalNames, e.g. launch the email app,
Intent email = context.getPackageManager().getLaunchIntentForPackage(canonicalNames[0]);
context.startActivity(email);
}catch(NameNotFoundException e){
Log.d("MY ACTIVITY NAME", "Package name(s) not found.");
}
我正在考虑自己做这种事情,但还没有尝试过这段代码,所以请谨慎使用。
编辑:所以今晚试了一下,解决方案可能不是你想要的。假设您只从这些应用程序的显示名称开始(技术上称为应用程序标签),您可能必须实际检查设备上安装的所有应用程序以查找该应用程序标签。我刚刚在我的博客上发布了我的解决方案,所以看看。