【问题标题】:how to get currently selected application package name in android programmatically?如何以编程方式在android中获取当前选择的应用程序包名称?
【发布时间】:2016-04-12 17:45:11
【问题描述】:

我已经创建了带有图像的自定义软键盘,我的任务是希望将选定的图像发送到用户当前选择的应用程序,例如 google hangout,但是如果我使用 google,我可以使用包管理器获取已安装的应用程序包名称和图标环聊应用程序意味着我必须获取谷歌环聊应用程序包名称,并且从我的自定义键盘我必须将选定的图像直接共享到环聊聊天对话作为消息我该如何解决这个问题。

【问题讨论】:

    标签: android sendmessage ime android-package-managers custom-keyboard


    【解决方案1】:

    您可以获得所有已安装包的详细信息。

     public ArrayList<PackageInfoStruct> getInstalledApps(Activity mActivity) {
        ArrayList<PackageInfoStruct> res = new ArrayList<PackageInfoStruct>();
        List<PackageInfo> packs = mActivity.getPackageManager()
                .getInstalledPackages(0);
    
        for (int i = 0; i < packs.size(); i++) {
            PackageInfo p = packs.get(i);
            PackageInfoStruct newInfo = new PackageInfoStruct();
            newInfo.appname = p.applicationInfo.loadLabel(
                    mActivity.getPackageManager()).toString();
            newInfo.pname = p.packageName;
            newInfo.datadir = p.applicationInfo.dataDir;
            newInfo.versionName = p.versionName;
            newInfo.versionCode = p.versionCode;
            newInfo.icon = p.applicationInfo.loadIcon(mActivity
                    .getPackageManager());
            res.add(newInfo);
        }
        return res;
    }
    
    public class PackageInfoStruct {
        String appname = "";
        String pname = "";
        String versionName = "";
        int versionCode = 0;
        Drawable icon;
        String datadir = "";
    }
    

    致电getInstalledApps

    ArrayList<PackageInfoStruct> installedPackageDetails = getInstalledApps(getActivity());
    

    您可以使用上述方法显示已安装应用程序的列表,并在选择时根据所选项目提供详细信息。 PackageInfoStruct 类包含包的详细信息

    【讨论】:

      【解决方案2】:

      来自活动

      String appPackage = currentContext.getPackageName();

      String appPackage = getApplicationContext().getPackageName();
      

      【讨论】:

      • 感谢我找到了使用此代码的解决方案 ComponentName componentInfo = runningTaskInfos.get(0).topActivity; String currentpackagename = componentInfo.getPackageName(); Log.d("当前包名:","#############"+当前包名);
      • @MahaJeyaraj 我也有和你一样的要求,但是你上面提到的总是返回 android.app.launcher 包
      【解决方案3】:
      try it...
      

      String packageName = getApplicationContext().getPackageName();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-09
        • 2016-03-28
        相关资源
        最近更新 更多