支持Android设备与手机和没有电话功能

时间:2011-03-14 04:53:12

标签: android android-manifest

我的应用程序将在具有电话功能且不具备电话功能的设备上运行。以下是我的一些疑问:

1)我是否能够支持这两种类型的设备。 2)对于具有电话功能的设备,我需要启用呼叫功能。并且没有电话功能的设备我将禁用呼叫功能。

我不太清楚< user-permissions>和< user-features>概念,有没有办法指定手机< user-features>

2 个答案:

答案 0 :(得分:13)

如果您没有通过市场分发您的应用,如果您不关心遵循建议的做法,那么您应该只需要<uses-permission>个标签来获取该应用使用的任何权限。但是,要允许正确的设备通过电子市场访问应用,您需要<uses-permission><uses-feature>个标记。

<uses-permission>是一项请求,要求您的应用程序采取某种行动。准备安装应用程序时,用户可以查看请求的权限并决定是否继续安装。例如,如果应用程序尝试拨打电话而未声明“android.permission.CALL_PHONE”权限,则尝试将失败。有关基本平台权限的列表,请参阅here

市场也使用

<uses-permission>来隐式功能要求。如果您的应用程序使用需要电话硬件的权限,那么Market将假定需要电话硬件,并且该应用程序将无法用于缺少电话硬件的设备。

<uses-feature>可用于通知市场某个功能是必需的,或者功能是可取的但不是必需的。该代码将覆盖<uses-permission>隐含的任何功能。例如,如果您指定<uses-feature android:name="android.hardware.telephony" android:required="false" />,则无论要求的权限是什么,电话都不是

要了解<uses-permission><uses-feature>如何互动以创建市场过滤器,请参阅here

要在运行时检查功能是否可用,您似乎可以使用PackageManager.hasSystemFeature()

Context context;    // Some object, such as Activity, that extends Context
// ...
boolean hasTelephony = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
if (hasTelephony) {
    // ...
}
else {
    // ...
}

答案 1 :(得分:0)

好吧,我不知道一个非常简单的方法,但你可能想用下面的方法来获取手机的电话号码,如果它返回null,这可能意味着手机功能不可用,它是平板电脑或类似的东西(安卓动力微波炉?:p)

private String getMyPhoneNumber() {
    TelephonyManager mTelephonyMgr;
    mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    return mTelephonyMgr.getLine1Number();
}

另外,请务必在Android清单文件中添加权限“android.permission.READ_PHONE_STATE”。祝你好运:)