如何在 Android 中以编程方式检查某个应用是否已安装?
简介
在 Android 应用中,我们经常需要借助其他应用。我们需要从应用中打开其他应用。例如,如果我们想从应用中打开谷歌地图来显示两个地点之间的路线。在打开谷歌地图之前,我们必须首先检查用户设备上是否安装了该应用。在本文中,我们将了解如何检查应用是否已安装。
实现
我们将创建一个简单的应用,其中我们将创建一个简单的文本视图来显示应用的标题。之后,我们将创建一个按钮,用于检查 Android 设备中是否安装了谷歌地图。
步骤 1:在 Android Studio 中创建新项目
如下图所示,导航至 Android Studio。在下方屏幕中,点击"新建项目"以创建一个新的 Android Studio 项目。
点击"新建项目"后,您将看到以下屏幕。
在此屏幕中,我们只需选择"空活动"并点击"下一步"。点击"下一步"后,您将看到以下屏幕。
在此屏幕中,我们只需指定项目名称。然后包名称将自动生成。
注意 - 确保选择 Java 作为语言。
指定所有详细信息后,点击"完成"以创建一个新的 Android Studio 项目。
项目创建完成后,我们将看到两个打开的文件,即 activity_main.xml 和 MainActivity.java 文件。
步骤 2:使用 activity_main.xml
导航到 activity_main.xml。如果此文件不可见,请打开此文件。在左侧窗格中,导航至 app>res>layout>activity_main.xml 并打开此文件。打开此文件后,添加以下代码。代码中添加了注释,以便您详细了解。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- creating a text view on below line-->
<TextView
android:id="@+id/idTVHeading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="20dp"
android:padding="4dp"
android:text="Check weather Application is installed or not in Android"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold" />
<!-- creating a button on below line -->
<Button
android:id="@+id/idBtnCheckMaps"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/idTVHeading"
android:layout_margin="15dp"
android:text="Check Google Maps Application"
android:textAllCaps="false" />
</RelativeLayout>
说明:在上面的代码中,我们创建了一个相对布局的根布局。在这个布局中,我们创建了一个文本视图来显示应用程序的标题。之后,我们创建一个按钮,用于检查设备上是否安装了 Google 地图。
步骤 3:使用 MainActivity.java 文件
导航到 MainActivity.java。如果此文件不可见,请在左侧窗格中导航至 app>res>layout>MainActivity.java 以打开此文件。打开此文件后,将以下代码添加到其中。代码中添加了注释,以便您详细了解。
package com.example.java_test_application;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
// 在下行为文本视图创建变量。
private Button checkAppBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化下面一行的变量。
checkAppBtn = findViewById(R.id.idBtnCheckMaps);
// 在下面一行添加点击监听器
checkAppBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 下面我们通过指定谷歌地图的包名称来检查谷歌地图是否已安装。
if (checkInstallation(MainActivity.this, "com.google.android.apps.maps")) {
// 如果安装了地图,则在下面的行中显示一条提示消息。
Toast.makeText(MainActivity.this, "Google Maps is installed on this device..", Toast.LENGTH_SHORT).show();
} else {
// 如果未安装谷歌地图,则在下面的行显示 toast 消息。
Toast.makeText(MainActivity.this, "Google Maps is not installed on this device..", Toast.LENGTH_SHORT).show();
}
}
});
}
public static boolean checkInstallation(Context context, String packageName) {
// 在下面一行中为包管理器创建一个变量。
PackageManager pm = context.getPackageManager();
try {
// 下面一行获取软件包信息
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
// 如果软件包已安装,下面一行返回 true。
return true;
} catch (PackageManager.NameNotFoundException e) {
// 如果设备上未安装包,则返回 false。
return false;
}
}
}
说明:在上面的代码中,我们首先为按钮创建变量。现在我们来看一下 onCreate 方法。这是每个 Android 应用程序的默认方法。创建应用程序视图时会调用此方法。在此方法中,我们设置内容视图,即名为 activity_main.xml 的布局文件,并从该文件设置 UI。在 onCreate 方法中,我们使用在 activity_main.xml 文件中指定的 id 初始化按钮变量。之后,我们为按钮添加一个点击监听器。在点击监听器中,我们通过传递 Google 地图应用程序的包名称来检查是否安装了 Google 地图应用程序。因此,我们正在显示 Toast 消息。
添加上述代码后,现在只需点击顶部栏中的绿色图标即可在移动设备上运行我们的应用程序。
注意− 确保您已连接到真实设备或模拟器。
输出
结论
在上面的教程中,我们介绍了如何以编程方式检查 Android 中应用程序是否已安装。

