android - 如何通过代码查看具体特征?

标签 android uses-feature

这是 <uses-feature><uses-permission>在我的 Android 应用程序的 list 文件中指定

<uses-feature
        android:name="android.hardware.telephony"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.location"
        android:required="false" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

我知道它们用于指定应用程序所需的硬件/软件功能。此标签还会过滤我们在 Google Play 中的应用程序。我的应用程序也没有显示在某些设备上,包括平板电脑。我有些怀疑。

  1. 如果我们指定 <uses-permission> 会发生什么吗?不使用<uses-feature> ? 例如:使用权限 CALL_PHONE,MODIFY_PHONE_STATE等......没有指定硬件功能android.hardware.telephony

  2. 我的应用程序在单击两个按钮时触发了以下接收器。 我如何从代码中检查这些功能?

    android:name="android.intent.action.NEW_OUTGOING_CALL" Action android:name="android.intent.action.PHONE_STATE"

提前致谢

最佳答案

(1) 你需要同时定义<uses-permission /><uses-feature />然后设置 android:required="false"对于那个功能。例如

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-feature android:name="android.hardware.wifi" android:required="false" />

在这种情况下,您获得了权限,但该功能不是必需的,您可以检查它是否在您的代码中可用。为此

(2) 你应该使用 PackageManager.hasSystemFeature() 方法。例如

    PackageManager mgr = context.getPackageManager();
    boolean hasTelephony = mgr.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);

关于android - 如何通过代码查看具体特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18485170/

相关文章:

javascript - Android 2.2 和 2.3 不支持位置 :fixed

android - 您的设备与 Asus Nexus 7 英寸选项卡中的此版本不兼容

android - 如何在 Android 中基于 uses-features "android.hardware.telephony"制作多个 APK?

Android Market 将我的应用程序隐藏到某些平板电脑(如 Nexus 7)

android - 具有 ListView 和多对多关系的内容提供者

android - 在图库中保存图像

android - 在没有 SD 卡的情况下安装 Android 应用程序

java - 如何使用 JDB 在嵌套类中正确设置断点?