我有一个应用程序可以在具有手机功能但没有手机功能的设备上运行。这里是我的一些疑问:支持具有手机功能并且不具备手机功能的Android设备
1)我能支持这两种类型的设备。 2)对于具有电话功能的设备,我需要启用通话功能。和没有电话功能的设备,我将禁用呼叫功能。
我不看好<用户权限>和<用户功能>概念很清楚,有没有指定的手机<用户功能>
我有一个应用程序可以在具有手机功能但没有手机功能的设备上运行。这里是我的一些疑问:支持具有手机功能并且不具备手机功能的Android设备
1)我能支持这两种类型的设备。 2)对于具有电话功能的设备,我需要启用通话功能。和没有电话功能的设备,我将禁用呼叫功能。
我不看好<用户权限>和<用户功能>概念很清楚,有没有指定的手机<用户功能>
好办法,我不知道一个非常简单的方法要做到这一点,但你可能想要使用下面的方法来获取手机的电话号码,如果它返回null,这可能意味着手机功能不可用,它是一个平板电脑或类似的东西(android powered微波炉?:p)
private String getMyPhoneNumber() {
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
return mTelephonyMgr.getLine1Number();
}
另外,一定要在Android清单文件上添加权限“android.permission.READ_PHONE_STATE”。祝你好运:)
如果你不通过市场发布你的应用程序,如果你不关心遵循推荐的做法,那么你应该只需要<uses-permission>
标签的应用程序使用任何权限。但是,要让正确的设备通过Market访问应用,您需要使用<uses-permission>
和<uses-feature>
标签。
<uses-permission>
是要求您的应用程序有权采取某种行动。在准备安装应用程序时,用户可以查看所请求的权限并决定是否继续安装。例如,如果应用程序试图在未声明“android.permission.CALL_PHONE”权限的情况下拨打电话,则尝试将失败。有关基本平台权限的列表,请参阅here。
<uses-permission>
也被市场用于隐含特征要求。如果您的应用使用需要电话硬件的权限,则市场将假定需要电话硬件,并且该应用不适用于缺乏电话硬件的设备。
<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 {
// ...
}
我想通过市场部署应用程序,但仍然希望在设备中使用电话功能(如果可用),并在设备无法拨打电话时禁用通话功能。 – Avnish 2011-03-14 11:00:09
然后你需要清单中的'
我想通过市场部署应用程序,我必须从android 1.5支持。我认为android 1.5不支持uses-feature的“android-required”属性。它显示在编译时在包'android'“meassage中找不到”属性需要的资源标识符“。有没有其他的方式来支持这个ondroid-1.5。 – Avnish 2011-05-26 09:34:56
'使用-feature',据我所知,是唯一真正有限制与不足的用户硬件在Android市场上查看和下载您的应用程序。在这种情况下,因为您希望没有调用功能的人使用您的应用程序,所以您不希望要求电话硬件根据需要设置'uses-feature'元素。 – 2011-03-14 04:58:41