Google Play store say my app is incompatible with device which I developed the app

sally3599

Member
Licensed User
Longtime User
The app is a example of Advanced Camera Library V1.00 from here

http://www.b4x.com/forum/additional-libraries-classes-official-updates/9383-advanced-camera-library-v1-00-a.html

Unexpectedly it said : This app is incompatible with your HUAWEI Ideos, and also it can't be searched in the Google Play !

I check the Device Availability on Developer Console, does this problem come from Screen layout?

Screen layout: SMALL NORMAL LARGE XLARGE
The device functions
android.hardware.camera
android.hardware.camera.autofocus
android.hardware.microphone
android.hardware.screen.landscape
android.hardware.touchscreen
android.hardware.wifi

Then I add supports-screens in the AndroidManifest.xml, the problem is not solved.

Here is my AndroidManifest.xml:
B4X:
<?xml version="1.0" encoding="utf-8"?>
<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
   package="camera.lite"
   android:versionCode="1"
   android:versionName="1.0"
   android:installLocation="internalOnly">
   
   <supports-screens
       android:largeScreens="true"
       android:normalScreens="true"
       android:smallScreens="true"
       android:xlargeScreens="true"
       android:anyDensity="true"
   />
   <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />
   <supports-screens android:largeScreens="true" 
       android:normalScreens="true" 
       android:smallScreens="true" 
       android:anyDensity="true"/>
   <uses-permission android:name="android.permission.CAMERA"/>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.RECORD_AUDIO"/>
   <uses-permission android:name="android.permission.FLASHLIGHT"/>
   <uses-permission android:name="android.permission.RECORD_VIDEO"/>
   <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
   <uses-permission android:name="android.permission.BLUETOOTH"/>
   <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
   <uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
   <application
      android:icon="@drawable/icon"
      android:label="Camera Lite">
      <activity
         android:windowSoftInputMode="stateHidden"
         android:launchMode="singleTop"
         android:name=".main"
         android:label="Camera Lite"
         android:screenOrientation="landscape">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      <service android:name=".httputils2service">
      </service>
      <receiver android:name=".httputils2service$httputils2service_BR">
      </receiver>
   </application>
</manifest>

Any help will be appreciate it.
 

sally3599

Member
Licensed User
Longtime User
how many hour does google play store update the latest apk file?

Now I select this simple Camera app:

http://www.b4x.com/forum/basic4android-getting-started-tutorials/6891-take-pictures-internal-camera.html

But it still shows the device functions with camera.autofocus on Developer Console.
B4X:
android.hardware.camera
android.hardware.camera.autofocus
android.hardware.microphone
android.hardware.screen.landscape
android.hardware.touchscreen
android.hardware.wifi

Here is the AndroidManifest.xml:
B4X:
<?xml version="1.0" encoding="utf-8"?>
<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
   package="camera.lite"
   android:versionCode="1"
   android:versionName="1.0"
   android:installLocation="preferExternal">
   
   <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />
   <supports-screens android:largeScreens="true" 
       android:normalScreens="true" 
       android:smallScreens="true" 
       android:anyDensity="true"/>
   <uses-permission android:name="android.permission.CAMERA"/>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.INTERNET"/>
   <application
      android:icon="@drawable/icon"
      android:label="Camera Lite">
      <activity
         android:windowSoftInputMode="stateHidden"
         android:launchMode="singleTop"
         android:name=".main"
         android:label="Camera Lite"
         android:screenOrientation="landscape">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      <service android:name=".httputils2service">
      </service>
      <receiver android:name=".httputils2service$httputils2service_BR">
      </receiver>
   </application>
</manifest>

and This app is incompatible with your HUAWEI Ideos too.
how many hour does google play store update the lates apk file after uploading?

Any help will be appreciate it.
 
Upvote 0

sally3599

Member
Licensed User
Longtime User
Thanks for your help

I didn't use the copy protection, and HUAWEI Ideos not support flash and auto-focus, now I use the default Camera Library, has it flash and autofocus?
http://www.b4x.com/forum/basic4android-getting-started-tutorials/6891-take-pictures-internal-camera.html

Here is the AndroidManifest.xml shows only 3 permission:

B4X:
<?xml version="1.0" encoding="utf-8"?>
<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
   package="camera.litespace"
   android:versionCode="1"
   android:versionName="1.0"
   android:installLocation="preferExternal">
   
   <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="16" />
   <supports-screens android:largeScreens="true" 
       android:normalScreens="true" 
       android:smallScreens="true" 
       android:anyDensity="true"/>
   <uses-permission android:name="android.permission.CAMERA"/>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.INTERNET"/>
   <application
      android:icon="@drawable/icon"
      android:label="Camera Lite">
      <activity
         android:windowSoftInputMode="stateHidden"
         android:launchMode="singleTop"
         android:name=".main"
         android:label="Camera Lite"
         android:screenOrientation="landscape">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      <service android:name=".httputils2service">
      </service>
      <receiver android:name=".httputils2service$httputils2service_BR">
      </receiver>
   </application>
</manifest>


Then I upload this new app , it shows:

B4X:
The apk requirements the three kinds of permissions (application require these permissions will warn the user)

android.permission.CAMERA
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.INTERNET

This apk file requires Google Play screening function 4 will be used to

android.hardware.camera
android.hardware.camera.autofocus
android.hardware.screen.landscape
android.hardware.touchscreen

On Supported devices of the Developer Console(Not Release Yet):

B4X:
Only when we have defined in the application manifest function of the device, in order to use this application.

The screen layout : SMALL the NORMAL LARGE XLARGE

The device functions
android.hardware.camera
android.hardware.camera.autofocus
android.hardware.screen.landscape
android.hardware.touchscreen

More than 0 kinds of mobile devices support this application.

Any help will be appreciate it.
 
Last edited:
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
The camera permission implicitly adds the focus and autofocus uses-features.
<uses-feature> | Android Developers

You can explicitly add these uses-features with required = false:
B4X:
AddManifestText(<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>)
 
Upvote 0

Eduard

Active Member
Licensed User
Longtime User
Thanks very much for this solution

Is there any way to get rid of the error the user would get if he/she tries to open the camera on a device that doesn't have a camera?

I tried
B4X:
   Try
      camEx.Initialize(Panel1, frontCamera, Me, "Camera1")
      frontCamera = camEx.Front
   Catch
      Msgbox("Some friendly message","")
      Activity.Finish
   End Try

But that doesn't work.

User still gets message: Error occurred. An error has occurred in sub; a_camera_initializcamera java line:818 java.lang.ClassCastException:java.lang.NoClassDefFoundError
Continue?
 
Upvote 0

Oswald

Member
Licensed User
Longtime User
hi guys,
I am developing, debugging and testing my application with 3 different devices (v4.3, v4.0.3 and v.2.3.3) Everything is ok, works fine on all 3 devices. When I publish my application over the Google play, I can not find it with one of them which one has version 2.3.3. If try to reach that application over the web with the same device it says the application is incompatible with this device. what is wrong? if it is incompatible with that device how am I directly loading and runing APK file?

please help
BX
 
Upvote 0

Oswald

Member
Licensed User
Longtime User
Hello Erel
thanks for your quick response..
I am using b4aZXing version 1.50 for qr code scanning.
attached you can find my xml file (renamed to txt)

thanks in advance
BX
 

Attachments

  • AndroidManifest.txt
    1.9 KB · Views: 416
Upvote 0

Oswald

Member
Licensed User
Longtime User
some additional info regarding to my problem...
device 1 : flash lite and autofocus support. no problem loading from Google play
device 2 : no flash light but it has autofocus support. no problem loading from Google play
device 3 : no flash light no autofocus support. PROBLEM!
 
Upvote 0
Top