Android Question Tab not compatible

Nickelgrass

Active Member
Licensed User
Longtime User
Hello,
my App has been working fine so far. But then suddenly it was shown as incompatible to tab (cant find it on PlayStore anymore on tablet) and I cant figure out what happend to make it incompatible.
Here is the manifest:
B4X:
<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="apac.gearloose.net"
    android:versionCode="27"
    android:versionName="27"
    android:installLocation="internalOnly">
   
    <uses-sdk android:minSdkVersion="4" />
    <supports-screens android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:anyDensity="true"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
<!--<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>-->
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.hardware.camera"/>
    <uses-permission android:name="android.hardware.camera.autofocus"/>
    <uses-permission android:name="android.permission.FLASHLIGHT"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <application
        android:icon="@drawable/icon"
        android:label="APAC">
       
        <activity android:name="ice.zxing.CaptureActivity"
                android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden"
                android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                android:windowSoftInputMode="stateAlwaysHidden">
              </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".main"
            android:label="APAC"
            android:screenOrientation="portrait">
            <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
           
        </activity>
        <service android:name=".refresh">
        </service>
        <receiver android:name=".refresh$refresh_BR">
            <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".biblio"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".settings"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".anzeiger"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".mensa"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".mensa_wahl"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".debug"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".restrain"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".stundenplan_anzeige"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <service android:name=".apacwidget">
        </service>
        <receiver
            android:name=".apacwidget$apacwidget_BR"
            android:label="APAC Stundenplan">
            <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/apacwidget_info" />
           
        </receiver>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".stundenplan_erstellen"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".onlnehilfe"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".links"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
    </application>
</manifest>
I disabled ACCESS_NETWORK_STATE just in case.
What reasons could this have in general? It doesnt give me any reason and it is difficult to test. If i install the App directly on the tab it works fine. Just the PlayStore says its incompatible.
Am thankfull for any tips.Thanks!
 

Nickelgrass

Active Member
Licensed User
Longtime User
Here it is.

B4X:
'This code will be applied to the manifest file during compilation.
'You do not need to modify it in most cases.
'See this link for for more information: http://www.b4x.com/forum/showthread.php?p=78136
AddManifestText(
<uses-sdk android:minSdkVersion="4" />
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
'End of default text.
AddApplicationText(<activity android:name="ice.zxing.CaptureActivity"
        android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden">
      </activity>)
Thanks
 
Upvote 0

Nickelgrass

Active Member
Licensed User
Longtime User
To disable the permission i simply commented it in the manifest and made it read only. How would the RemovePermisson look in this case and where would I write it?
I am not sure where the camera.autofocus comes from. I suppose it is used by the barcode scanner zxing.
I will try the description from the other thread aswell.
Thanks!
 
Upvote 0

Nickelgrass

Active Member
Licensed User
Longtime User
I am affraid that did not do the trick.
Here is the manifest editor:
B4X:
AddManifestText(
<uses-sdk android:minSdkVersion="4" />
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
'End of default text.
AddApplicationText(<activity android:name="ice.zxing.CaptureActivity"
        android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden">
      </activity>)
AddManifestText(<uses-feature android:name="android.hardware.telephony" android:required="false"/>)
RemovePermission(android.permission.ACCESS_NETWORK_STATE)

And here the manifest:
B4X:
<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="apac.gearloose.net"
    android:versionCode="28"
    android:versionName="28"
    android:installLocation="internalOnly">
   
    <uses-sdk android:minSdkVersion="4" />
    <supports-screens android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:anyDensity="true"/>
    <uses-feature android:name="android.hardware.telephony" android:required="false"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.hardware.camera"/>
    <uses-permission android:name="android.hardware.camera.autofocus"/>
    <uses-permission android:name="android.permission.FLASHLIGHT"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <application
        android:icon="@drawable/icon"
        android:label="APAC">
       
        <activity android:name="ice.zxing.CaptureActivity"
                android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden"
                android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                android:windowSoftInputMode="stateAlwaysHidden">
              </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".main"
            android:label="APAC"
            android:screenOrientation="portrait">
            <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
           
        </activity>
        <service android:name=".refresh">
        </service>
        <receiver android:name=".refresh$refresh_BR">
            <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".biblio"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".settings"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".anzeiger"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".mensa"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".mensa_wahl"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".debug"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".restrain"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".stundenplan_anzeige"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <service android:name=".apacwidget">
        </service>
        <receiver
            android:name=".apacwidget$apacwidget_BR"
            android:label="APAC Stundenplan">
            <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/apacwidget_info" />
           
        </receiver>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".stundenplan_erstellen"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".onlnehilfe"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".links"
            android:label="APAC"
            android:screenOrientation="portrait">
        </activity>
    </application>
</manifest>

I put it in the Google Play store as beta and it showed the same number of supported the same number of devices. What else could this be? The app runs totally ok on tablets. Its just this dumb GooglePay that says different :-(
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
When you upload the APK, there should be an option to show all the "uses-feature" entries (which are derived from the permission). This is the list that is used to filter the devices.

You can add an entry for each of these features. Similar to:
B4X:
AddManifestText(<uses-feature android:name="android.hardware.telephony" android:required="false"/>
 
Upvote 0
Top