android - 如何以编程方式获取Android中当前选定的应用程序包名称?

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

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

最佳答案

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

 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 类包含包的详细信息

关于android - 如何以编程方式获取Android中当前选定的应用程序包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34670334/

相关文章:

sdl-2 - 无法在 SDL2 创建的窗口上打开输入法

swift - 如何在 Swift 中为 Mac OS X 开发一个简单的输入法?

C# - 在同一键盘布局中的两个不同 IME 之间自动切换

android - 为什么抽屉导航在第一次打开时滞后?

android - 如何从 Firestore 任务中获取响应代码

java - 在 android 中从我的应用程序发送彩信

c++ - 如何让 C++ 按下空格键?

delphi - SetWindowSubclass 将 ANSI 窗口更改为 UNICODE

android - 这是什么错误? + LibGDX + super 跳线

c# - Xamarin - 找不到类(android 支持库)