Android 如何通过代码指定硬件需求?

Android 如何通过代码指定硬件需求?,android,uses-feature,Android,Uses Feature,我有一个android应用程序,它有一个控制呼叫的规定,即允许或阻止特定的传入和传出电话 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxxx.xxxxxx.xxxxxxx" android:installLocation="internalOnly" android

我有一个android应用程序,它有一个控制呼叫的规定,即允许或阻止特定的传入和传出电话

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxxx.xxxxxx.xxxxxxx"
    android:installLocation="internalOnly"
    android:versionCode="1"
    android:versionName="1.0" >
     <uses-feature
        android:name="android.hardware.telephony"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.location"
        android:required="false" />
    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />
    <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" />
     <application>
        </activities>
        </services>
        <receiver android:name="xxxx.xxxx.ReceiverOutGoingCall" >
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
        </receiver>
        <receiver android:name="xxxx.xxxx.ReceiverIncomingCall" >
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

Google play中的某些设备没有显示此应用程序。经过长时间搜索后,我了解到这是由于
硬件要求。否我想从清单中删除电话呼叫所需的硬件功能,并从代码中检查它们

一些没有电话呼叫功能的平板电脑不显示我的应用程序。因此,我想让这些缺乏所需硬件的平板电脑可以使用我的应用程序。我如何实现这一点


提前感谢

尝试此代码以检查手机功能是否可用:

    public static boolean isTablet(Context context) {
        TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        return manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
}

不幸的是,在安装应用程序后,没有办法添加权限。也许你可以发布2个APK。一个用于移动设备,一个用于平板电脑。

某些权限会自动满足功能要求。

API指南是这样说的:

您的权限意味着功能
android.hardware.wifi
android.hardware.location.network
android.hardware.location.gps
android.hardware.location
android.hardware.telephony


您只将其中两个设置为
android:required=“false”
。因此,您也可以尝试将其他权限设置为“不需要”。

birdy,我以平板电脑为例。我想让我的应用程序在所有设备上运行/显示,即使它们没有拨打电话所需的硬件。或HANC1,我以平板电脑为例。我想让我的应用程序适用于所有设备,即使它们没有打电话所需的硬件。我理解。我也以平板电脑为例。如果您希望应用程序显示无法使用某些权限的内容,则需要一个不使用这些权限的应用程序。如果我从清单中删除,是否会出现任何问题?