我有一个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中的某些设备上显示。经过长时间的搜索,我了解到这是由于<uses-feature>
的硬件要求。不,我想从清单中删除电话呼叫所需的硬件功能,并从代码中检查它们。
一些没有电话呼叫功能的平板电脑不会显示我的应用程序。因此,我想让我的应用程序可用于这些缺乏所需硬件的平板电脑。我怎样才能做到这一点?
提前感谢
某些权限会自动影响功能要求
API指南是这样说的:"对于下面的任何权限,您都可以通过在元素中显式声明隐含功能,并使用android:required="false"属性来禁用基于隐含功能的过滤。"
您的权限包含功能android.hardware.wifi
、android.hardware.location.network
、android.hardware.location.gps
、android.hardware.location
和android.hardware.telephony
。
您只将其中两个设置为android:required="false"
。因此,您也可以尝试将其他权限设置为不需要。
不幸的是,安装应用程序后无法添加权限。也许你可以发布2个APK。一个用于移动设备,一个用于平板电脑。
尝试此代码检查电话功能是否可用:
public static boolean isTablet(Context context) {
TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
return manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE;
}