2015-02-24 91 views
1

我已经构建了一个使用语音合成的Cordova/phonegap应用程序。 为了避免打扰智能手机上的电话,我使用phonecalltrap插件(io.gvox.plugin.phonecalltrap)来检测任何传入或正在进行的电话呼叫,以防止语音合成。cordova phonecalltrap插件和google play设备兼容性

问题是,尽管在无法接听电话的平板电脑上手动安装时,它非常有效(实际上无用),但使用phonecalltrap插件会使应用程序与Google Play上的平板电脑不兼容。

的原因是,它已经增加至APK以下先决条件:

uses-feature: name='android.hardware.telephony' 
uses-implied-feature: name='android.hardware.telephony' reason='requested a telephony permission' 

现在,我可以在编译之前修改AndroidManifest.xml中删除的前提条件,并建立一个APK不具备上述先决条件。

但在这种情况下,phonecalltrap插件不支持了...(不工作)

什么是在这种情况下,常见的做法?

我不认为建立两个不同的应用程序,一个用于平板电脑,一个用于智能手机,在Google Play上支持这两种应用程序是一个很好的途径,因为它会将用户基数分成两部分,只是为了一个愚蠢的小“特征”。 我认为应该有一种方法可以让Google播放“使用硬件电话(如果可用)”,而不是“此应用程序需要电话硬件”。

有什么建议吗?

回答

1

最后,我找到了一个解决方案,内容如下:

http://developer.android.com/distribute/essentials/quality/tablets.html#hardware-requirements

我这样做了什么,以确保这个选项在科尔多瓦正确地传递建造时间,并且有对手机硬件没有要求,是修改$ PROJETC /插件/ android.json加入了android:所需= \ “假\” 选项的插件允许这样:

    { 
         "xml": "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" android:required=\"false\" />", 
         "count": 2 
        }, 
        { 
         "xml": "<uses-permission android:name=\"android.permission.PROCESS_OUTGOING_CALLS\" android:required=\"false\" />", 
         "count": 1 
        }, 
        { 
         "xml": "<uses-feature android:name=\"android.hardware.telephony\" android:required=\"false\" />", 
         "count": 1 
        } 

这样,平台/安卓/与正确的权限产生的AndroidManifest.xml在建设ti我和该应用程序在Google Play上与平板电脑兼容。

我要离开我的问题和答案,希望对别人有用!