为了账号安全,请及时绑定邮箱和手机立即绑定

从程序包名称获取应用程序名称

从程序包名称获取应用程序名称

繁华开满天机 2019-10-08 15:53:27
我想从应用程序包名称中获取应用程序名称。有人请告诉我我怎么能得到这个。public class AppInstalledListener extends BroadcastReceiver{    @Override    public void onReceive(Context context, Intent intent) {        // TODO Auto-generated method stub        String action = intent.getAction();        if(action.equals("android.intent.action.PACKAGE_ADDED")){            Logger.debug("DATA:"+intent.getData().toString());        }        if(action.equals("android.intent.action.PACKAGE_REMOVED")){            Logger.debug("DATA:"+intent.getData().toString());        }        if(action.equals("android.intent.action.PACKAGE_REPLACED")){            Logger.debug("DATA:"+intent.getData().toString());        }    }}
查看完整描述

4 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

您可以使用PackageManagerclass获得ApplicationInfo:


final PackageManager pm = getApplicationContext().getPackageManager();

ApplicationInfo ai;

try {

    ai = pm.getApplicationInfo( this.getPackageName(), 0);

} catch (final NameNotFoundException e) {

    ai = null;

}

final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");

这将返回<application>清单清单标签中定义的应用程序名称。


查看完整回答
反对 回复 2019-10-08
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

尝试这个


final String packageName = "my.application.package"

PackageManager packageManager= getApplicationContext().getPackageManager();

String appName = (String) packageManager.getApplicationLabel(packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA));

并替换packageName为您的包裹全名。


您可以使用where 用于Activity并使用getActivity()作为片段来获取packageName 。mContext.getPackageName()mContext = yourActivityName.this


查看完整回答
反对 回复 2019-10-08
?
精慕HU

TA贡献1845条经验 获得超8个赞

 public static String getAppNameFromPkgName(Context context, String Packagename) {

    try {

        PackageManager packageManager = context.getPackageManager();

        ApplicationInfo info = packageManager.getApplicationInfo(Packagename, PackageManager.GET_META_DATA);

        String appName = (String) packageManager.getApplicationLabel(info);

        return appName;

    } catch (PackageManager.NameNotFoundException e) {

        e.printStackTrace();

        return "";

    }

}


查看完整回答
反对 回复 2019-10-08
?
万千封印

TA贡献1891条经验 获得超3个赞

看来您能够收到添加新软件包的事件,这是一个非常简单的概念,它可以获取有关该软件包的所有相关信息,例如此类信息就是应用程序名称,因此这里就是概念


->您的设备包管理器具有与之相关的所有信息,因此,只需为其创建一个对象,它将为您提供与包名称相关的所有信息。


->您还应该记住,该意图为您提供了“ package:real_package_name”,因此首先您必须首先通过溢漏(我用过的)或任何其他简单的String实现获得真实名称。


->这是代码,希望您能得到想要的,我也提供有关如何获取应用程序名称,应用程序图标,应用程序版本,应用程序版本代码等的信息。


    public class NewAppReciver extends BroadcastReceiver{


@Override

public void onReceive(Context context, Intent intent) {

    if(intent.getAction().equals("android.intent.action.PACKAGE_ADDED")){

    String[] a=intent.getData().toString().split(":");

    String packageName=a[a.length-1];


    List<PackageInfo> packageInfoList =          context.getPackageManager().getInstalledPackages(0);

    for (int i = 0; i < packageInfoList.size(); i++) {

        PackageInfo packageInfo = packageInfoList.get(i);

        if(packageInfo.packageName.equals(packageName)){

            String appName = packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString();

            String appVersion = packageInfo.versionName;

            int appVerCode = packageInfo.versionCode;

            Drawable app_icon = packageInfo.applicationInfo.loadIcon(context.getPackageManager());

             }

         }

      }

   }    

}

但是在卸载应用程序时,您只能获得软件包名称,因为在卸载时,系统会删除所有其他信息。


查看完整回答
反对 回复 2019-10-08
  • 4 回答
  • 0 关注
  • 797 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信