当前位置: 首页 > 知识库问答 >
问题:

如何以编程方式检查应用程序是否安装在Android中?

王德华
2023-03-14

我们以编程方式安装了应用程序

  1. 如果应用程序已安装在设备中,则应用程序将自动打开。

指引我。我完全不知道。谢谢。

共有3个答案

马欣荣
2023-03-14

上面的代码对我不起作用。以下方法奏效了。

使用适当的信息创建一个Intent对象,然后检查Intent是否可调用或未使用以下函数:

private boolean isCallable(Intent intent) {  
        List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,   
        PackageManager.MATCH_DEFAULT_ONLY);  
        return list.size() > 0;  
}
柯波
2023-03-14

比公认答案(基于此问题)更干净的解决方案:

public static boolean isAppInstalled(Context context, String packageName) {
    try {
        context.getPackageManager().getApplicationInfo(packageName, 0);
        return true;
    }
    catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

我选择将它作为一个静态实用程序放在helper类中。用法示例:

boolean whatsappFound = AndroidUtils.isAppInstalled(context, "com.whatsapp");

此答案显示了如果应用程序丢失,如何从Play Store获取应用程序,但在没有Play Store的设备上需要小心。

皇甫飞光
2023-03-14

试试这个:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Add respective layout
        setContentView(R.layout.main_activity);

        // Use package name which we want to check
        boolean isAppInstalled = appInstalledOrNot("com.check.application");  
        
        if(isAppInstalled) {
            //This intent will help you to launch if the package is already installed
            Intent LaunchIntent = getPackageManager()
                .getLaunchIntentForPackage("com.check.application");
            startActivity(LaunchIntent);
                    
            Log.i("SampleLog", "Application is already installed.");          
        } else {
            // Do whatever we want to do if application not installed
            // For example, Redirect to play store

            Log.i("SampleLog", "Application is not currently installed.");
        }
    }

    private boolean appInstalledOrNot(String uri) {
        PackageManager pm = getPackageManager();
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
        }

        return false;
    }

}
 类似资料:
  • 在Android 9中 我还在清单文件中添加了必需的权限。 当我运行这个程序时,它告诉我解析包错误时出现了问题。

  • 我在尝试以编程方式安装apk并在安装后重新启动Android emulator时遇到了一些问题。我指的是这条线。 这是我的代码: 有没有办法安装apk而不启动意图?因为我正在AsyncTask的中执行上述方法。然后在中,我需要显示一个片段,说明安装成功。 然而,对于上面的代码,在调用时,它只是关闭了我的所有片段。

  • 我有一个应用程序,需要提供其他设备语言本地化的字符串。只要我的应用程序知道另一台设备的语言,它就会创建一个新的资源类。与此问题类似。 如果不支持该语言,则刚创建的资源对象在获取字符串时可能会后退(假设其他设备设置为en\u US): strings.xml zh/strings.xml 值/strings.xml 与第三种回退方式不同,我希望回退到我自己设备的语言(假设我的设备设置为es\u es

  • 问题内容: 我是一名Android开发人员,我想在我的应用程序中编写一条语句。在此语句中,我要检查默认浏览器(Android OS中 问题答案: 添加下面的Helper类: 现在,你可以从以下代码中检查所需的应用程序是否正在运行:

  • 问题内容: 我想使用来测试崩溃报告,但第一步是我需要使用代码在Android中模拟致命崩溃。 任何想法? 问题答案: 更新:也可以尝试这种创建方法, 并将其称为某处/ buttonClick 或直接抛出未捕获的异常 答对了!