android-package-managers 相关问题

用于检索与当前安装在设备上的应用程序包相关的各种信息的类。您可以通过getPackageManager()找到此类。

使用 Intent.resolveActivity 检查设备中是否存在 Waze 应用程序在 Android 13 及更高版本中无法运行

我尝试使用此代码来检查设备中是否有 Waze 应用程序,即使我的设备中有 Waze(适用于 Android 13 及更高版本),它也始终返回 false。 有趣的 isWazeExist(): 布尔值 { val 意图 = ...

回答 1 投票 0

hasSystemFeature(PackageManager.FEATURE_CAMERA) 对于没有相机的设备返回 true

我有一个使用相机功能的应用程序,但其部分功能也可以在没有相机功能的情况下运行。所以我已将其放入我的清单中。 我有一个使用相机功能的应用程序,但其部分功能也可以在没有相机功能的情况下运行。所以我已将其放入我的清单中。 <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" android:required="false"/> 在我的代码中,我使用此功能检查设备是否有摄像头 final boolean deviceHasCameraFlag = pm.hasSystemFeature(PackageManager.FEATURE_CAMERA); 现在我正在运行 Android 4.0(ICS) 并且没有摄像头的平板电脑上测试我的代码。但我仍然得到 deviceHasCameraFlag 的真实值。这很奇怪还是我错过了什么? 我尝试了不同的方法,甚至在蓝牙功能上尝试了相同的方法,因为平板电脑甚至没有蓝牙功能。它适用于蓝牙,但适用于相机。 它是什么设备?你得到的答案是一个错误,4.0 现在已经很老了。许多仍然运行此版本的平板电脑制作不正确,硬件和软件都存在多个问题。 无论如何,您应该始终准备好处理 Camera.open() 或 Camera.open(0) 上的故障:例如,在某些情况下,设备上的其他软件不会正常释放相机。 因此,在您的情况下,您有误报,您尝试打开相机,但失败了,并且您继续,就像设备上没有相机一样,即使PackageManager认为PackageManager.FEATURE_CAMERA可用。 虽然我已经接受了 Alex 的答案,但我想把这个答案放在这里,展示如何处理硬件故障和错误。 我的发现是在我的低标准 Android 设备的情况下 pm.hasSystemFeature(PackageManager.FEATURE_CAMERA) 即使相机不存在并且似乎是设备错误,也会返回 true。 所以每当有场景需要检查设备上是否存在摄像头时,请参考下面的解决方案来了解如何处理此类故障 int numberOfCameras = Camera.getNumberOfCameras(); context = this; PackageManager pm = context.getPackageManager(); final boolean deviceHasCameraFlag = pm.hasSystemFeature(PackageManager.FEATURE_CAMERA); if( !deviceHasCameraFlag || numberOfCameras==0 ) { Log.e(TAG, "Device has no camera" + numberOfCameras); Toast.makeText(getApplicationContext(), "Device has no camera", Toast.LENGTH_SHORT).show(); captureButton.setEnabled(false); } else { Log.e(TAG, "Device has camera" + deviceHasCameraFlag + numberOfCameras); } 在此,我要检查摄像头的数量以及设备是否具有摄像头功能布尔值,因此即使系统返回一个不正确的值,另一个条件也将有助于纠正代码。 就我而言,我有以下代码: public boolean hasCameraSupport() { boolean hasSupport = false; if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) { //<- this constant caused problems hasSupport = true; } return hasSupport; } 并且它在运行 Android 4.1.1 (API 16) 的 Genymotion 设备上不断返回 false。一旦我将常数 PackageManager.FEATURE_CAMERA_ANY 更改为 PackageManager.FEATURE_CAMERA,我的问题就消失了。我猜测并非所有设备/API 级别都支持PackageManager.FEATURE_CAMERA_ANY。 我明白了,你一定会尝试这个,它肯定会起作用...... import android.hardware.Camera; int numCameras = Camera.getNumberOfCameras(); if (numCameras > 0) { System.out.println("camera"); } else { System.out.println("No Camera"); } 对于CameraX,如果设备上没有Camera时FEATURE_CAMERA_ANY方法仍然返回true,您可以添加以下方法。因此,当 CameraX 初始化时,无论 FEATURE_CAMERA_ANY 返回 true 还是 false,如果相机实际上在设备上不可用,下面的方法将确保执行您想要的操作。 private CameraSelector cameraSelector; private ProcessCameraProvider cameraAvailableCheck; private ListenableFuture<ProcessCameraProvider> cameraAvailableCheckFuture; private void checkIfAnyCameraExist() { cameraAvailableCheckFuture = ProcessCameraProvider.getInstance(context); cameraAvailableCheckFuture.addListener(new Runnable() { @Override public void run() { try { cameraAvailableCheck = cameraAvailableCheckFuture.get(); if ((cameraAvailableCheck.hasCamera(cameraSelector.DEFAULT_BACK_CAMERA) || cameraAvailableCheck.hasCamera(cameraSelector.DEFAULT_FRONT_CAMERA) )) { //Do what you want if at least back OR front camera exist } else { //Do what you want if any camera does not exist } } catch (ExecutionException | InterruptedException | CameraInfoUnavailableException e) { // No errors need to be handled for this Future. // This should never be reached. } } }, ContextCompat.getMainExecutor(this)); } 请尝试此代码: private boolean isDeviceSupportCamera() { if (getApplicationContext().getPackageManager().hasSystemFeature( PackageManager.FEATURE_CAMERA)) { // this device has a camera return true; } else { // no camera on this device return false; } } 还是不行请告诉我

回答 6 投票 0

未从 PackageInstaller 获取状态更新

我正在尝试使用 PackageInstaller 来安装 apk,当我将会话提交到包安装以开始安装过程时,我的广播接收器获得了操作,但没有任何额外的...

回答 1 投票 0

AndroidManifest <queries/> 到底做了什么?为什么不定义<queries/>标签就可以查询packageInfo?

我有一个来自服务器响应的packageName列表,我想显示用户也安装在这个packageNameList中的所有应用程序。然后我写了这段代码: 有趣的函数(){ val 封装名称...

回答 1 投票 0

为什么PackageManager GetInstalledApplications总是触发NotImplementedException?

我正在开发一个 C# Xamarin 项目,我需要从我的 Android 手机获取已安装应用程序的列表。 为此,我尝试使用 PackageMana 中的 GetInstalledApplications 方法...

回答 1 投票 0

如何从coroutineContext初始化或访问packageManager?

我有一个 Jetpack Compose 项目,我只能访问 coroutineContext 对象。这里没有可用的上下文。 如何访问或初始化 android.content.pm.PackageManager ?

回答 2 投票 0

Android:作为设备所有者,如何通过设备策略管理器禁用播放保护?

当我尝试使用设备所有者/配置应用程序中的 PackageInstaller 服务下载并安装第 3 方应用程序时,Google Play 在安装应用程序之前会显示一条提示。我可以接受或者d...

回答 1 投票 0

选择可以发送文本的应用程序(Whatsapp、Viber 和默认短信应用程序)Android

我的解决方案可以在三星设备上正常工作,但在小米设备上Whatsapp会自动启动。我希望用户选择从哪个应用程序发送一些提供的文本。 这段代码是正确的

回答 1 投票 0

找不到符号PackageManager

我正在尝试创建一个非常简单的代码来从另一个应用程序打开一个应用程序。 使用的代码如下, android.app.Activity 导入; android.content.Context 导入; android.内容。

回答 2 投票 0

Android PackageManager 对同一个 apk 返回不同的签名

我有一个android应用程序,我想在运行时验证它的签名。这是我的代码: @SuppressLint("PackageManagerGetSignatures") 私人布尔validSignature(上下文上下文...

回答 1 投票 0

ApkChecksum的getValue()返回的字节数组的编码格式是什么?

从API级别31开始,android的包管理器添加了requestChecksums(),允许检索各种apk哈希值。这样,我们就可以得到一个List;然而,开发...

回答 1 投票 0

如何获取访问我的应用的Content Provider的应用的包名?

实际上,当任何其他应用程序从我的应用程序共享的内容提供商获取数据时,我想要某种广播

回答 3 投票 0

PackageManager 名称未找到异常

我是android编程新手。我使用 Eclipse 以及 MainActivity.java 和 ClassFragment.java 文件创建了一个应用程序。 ClassFragment 是一个片段。我正在使用新更新的 appcompat 库。我

回答 3 投票 0

每个Android版本安装APK的正确方法是什么?

我正在制作一个 APK 安装应用程序,我经历了很多。特别是版本控制。 为此,我查阅了一些帖子和 StackOverFlow。但是所有的帖子现在让我更加困惑。所以,我...

回答 0 投票 0

OTA应用更新后,Android试图引用广播接收器的旧包名。

我在一个基于AOSP 8.1的自定义操作系统上工作。我有一个系统应用(在systempriv-app中),它有一个导出的广播接收器。这意味着它可以接受来自应用程序外部的Intents。如果我重构...

回答 1 投票 4

第二次从存储中选择图像时出现NullPointerException,第一次选择时没有NullPointerException。

我设置了一个按钮,是为了检查READ_EXTERNAL_STORAGE权限,然后打开用户手机存储显示图片。我通过下面的代码成功完成了这个任务。所有的...

回答 1 投票 1

获取软件包安装程序

我想为我的应用添加一个解锁器,这个解锁器只能在Play Store上使用。如何检查,包是否是Play Store安装的?我在SD Maid里看到过,但是我没有找到 ...

回答 1 投票 0

将APK转换为最小APK后如何解析?

背景,我希望能够解析来自各种来源或各种来源的APK文件。我只想获取有关它们的非常具体的基本信息:包名版本代码版本名称标签(...

回答 1 投票 0

我怎么知道该应用是否已经从Google Play下载一次

我有一个与会员系统兼容的Android移动应用程序。在我的应用程序中有指向其他移动应用程序和游戏的链接。使用数据包管理器,我可以检查...

回答 2 投票 1

[NullPointerException,第二次以后选择图像,NullPointerException,第一次选择

我设置了一个按钮,该按钮用于检查READ_EXTERNAL_STORAGE权限,然后打开用户手机存储的显示图像。我已经通过以下代码成功完成了此操作:全部...

回答 1 投票 1

© www.soinside.com 2019 - 2024. All rights reserved.