java - 取消定义 packageName 并捕获图标

标签 java android android-package-managers

我正在尝试获取数据库导向应用程序的 Package Name 并缩进应用程序的包图标并将其设置在 ImageView 中

到目前为止,我能够构建的是:

try {
    Cliente movieDetailsVO=myDb.getFav(0); // DB sqlite

    // Erro here next line --V
    Drawable icon=getPackageManager().getApplicationIcon(movieDetailsVO.getCOLPM()); // <== get ID package app banco de dados
    imgIcon.setImageDrawable(icon);
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

有人可以帮助我...


整理 @aminography 帮了我,非常感谢大家的关注

我是这样的

Cliente movieDetailsVO = myDb.getFav(0);
txtMovieNameDisplay.setText(movieDetailsVO.getNAME());
String packageName = movieDetailsVO.getCOLPM(); 

try {

    Drawable icon = getContext().getPackageManager().getApplicationIcon(packageName);
    imgIcon.setImageDrawable(icon);
} catch (PackageManager.NameNotFoundException ne) {

}

最佳答案

您可以获得应用程序图标及其启动Intent,如下所示:

Cliente movieDetailsVO = myDb.getFav(0);
String packageName = movieDetailsVO.getCOLPM(); // Be sure about package name correctness

Drawable drawable = null;
try {
    drawable = getPackageManager().getApplicationIcon(packageName);
} catch (Exception ignored) {
}
Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);

// Try to use glide to show images into an ImageView
Glide.with(getApplicationContext()).load(drawable).into(imgIcon);

关于java - 取消定义 packageName 并捕获图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52469954/

相关文章:

android - 如何检测任何应用程序是否已从设备中安装的基本版本升级并检测它是否是家庭启动器应用程序?

java - 更改 Active Directory 的邮件属性

java - 连接到远程任务管理器失败。这可能表明远程任务管理器已丢失

python - 使用 Chaquopy 安装 TensorFlow 时出现 "Read timed out"

android - 使用 Gradle 覆盖库项目 list 中的 applicatoinID

android - 找不到 android.app.ApplicationPackageManager

java - 从独立线程重定向 Icefaces 页面?

java - 如何让应用程序主线程进入休眠状态,以显示进度对话框的变化?

java - 发送复杂的 JSON 对象

java - 无法将套接字从 Android 客户端应用程序连接到服务器