这款应用会出现在Play商店吗?

时间:2015-12-11 12:18:48

标签: java android android-permissions

我在许多地方都听说过,如果我的应用使用了不适用于某个设备的权限,它就不会出现在该设备的Play商店中。现在,在我的代码中,我正在播放音频。只要有电话,我就会把这个音频静音:

alert('Found the script!!!');
$(window).load(function () {
    alert('Found the script.');
});
$(document).ready(function () {
    alert('Document is ready');
});
$(function(){
    alert('Running the script');
});

现在,它在清单中使用以下权限:

 private PhoneStateListener phoneStateListener = new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
                if (state == TelephonyManager.CALL_STATE_RINGING) {
                    onPhoneCallInterrupt(); //Method I made that mutes audio for phone call
                } else if (state == TelephonyManager.CALL_STATE_IDLE) {
                } else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
                    onPhoneCallInterrupt(); //Method I made that mutes audio for phone call
                }
        }
    };

我是否会收到任何例外情况,因为我通过在没有手机兼容性(平板电脑)的设备上执行<uses-feature android:name="android.permission.READ_PHONE_STATE" android:required="false" /> 来使权限可选?

我对此感到困惑的原因是因为我正在检查手机是否正在使用,但我没有使用它。那么,我的应用程序是否可以在平板电脑上运行,更不用说出现在游戏商店中了?

感谢您帮助我解决这个困惑,

Ruchir

1 个答案:

答案 0 :(得分:-2)

你必须这样使用 作为您的权限READ_PHONE_STATE请求

<uses-feature android:name="android.hardware.telephony" />

所以你需要使用这个

<uses-feature android:name="android.hardware.telephony"
        android:required="false" />

所以Play商店不会为平板电脑过滤您的应用 但请确保您必须手动检查您使用的设备是手机或平板电脑的电话功能,以及是否有电话

要检查电话访问设备是否使用此检查此代码

static public boolean hasTelephony()
{
    TelephonyManager tm = (TelephonyManager) Hub.MainContext.getSystemService(Context.TELEPHONY_SERVICE);
    if (tm == null)
        return false;

    //devices below are phones only
    if (Utils.getSDKVersion() < 5)
        return true;

    PackageManager pm = MainContext.getPackageManager();

    if (pm == null)
        return false;

    boolean retval = false;
    try
    {
        Class<?> [] parameters = new Class[1];
        parameters[0] = String.class;
        Method method = pm.getClass().getMethod("hasSystemFeature", parameters);
        Object [] parm = new Object[1];
        parm[0] = "android.hardware.telephony";
        Object retValue = method.invoke(pm, parm);
        if (retValue instanceof Boolean)
            retval = ((Boolean) retValue).booleanValue();
        else
            retval = false;
    }
    catch (Exception e)
    {
        retval = false;
    }

    return retval;
}

您可以查看此博客 http://commonsware.com/blog/2011/02/25/xoom-permissions-android-market.html