【问题标题】:Will this app show up in the Play Store?这个应用程序会出现在 Play 商店中吗?
【发布时间】:2016-03-17 08:35:12
【问题描述】:

我在很多地方都听说过,如果我的应用使用了不适用于某个设备的权限,它就不会出现在该设备的 Play 商店中。现在,在我的代码中,我正在播放音频。每当有电话时,我都会通过以下方式静音该音频:

 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" />

我是否会因为在不兼容手机的设备(平板电脑)上通过android:required = "false" 将权限设为可选而获得任何例外?

我对此感到如此困惑的原因是因为我正在检查手机是否正在使用,但我没有使用它。那么,我的应用能否在平板电脑上运行,更不用说在 Play 商店中为他们显示了?

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

鲁基尔

【问题讨论】:

    标签: java android android-permissions


    【解决方案1】:

    你必须使用这种方式 经您的许可 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

    【讨论】:

    • 如何手动检查?我已经搜索了很长时间了。一旦我得到这个,我会标记你的最佳答案并喜欢你的答案!
    • 你检查过这个答案stackoverflow.com/questions/15580590/…手动检查平板电脑是否有电话访问权限
    • @RuchirBaronia 一旦检查了这个功能,我就更新了我的答案
    • 那么如果设备没有 Telephony 功能,它将为空?
    • 为什么要把.permission.READ_PHONE_STATE 换成.hardware.telephony
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    相关资源
    最近更新 更多