I have a Worklight hybrid app that works fine with most all devices except for the newer Galaxy S5 and Note 4.
The app displays fine in all devices, however it uses the Cordova camera plug-in to get an existing pictures. But, Samsung has a directory chooser "Get Pictures" before the file chooser. The dialog is so large that is un-usable.
I have tried setting anyDensity
to false but this causes the app's content to be tiny although the dialog looked good. I also tried using targetSdkVersion=13
, android:xlargeScreens
, android:compatibleWidthLimitDp
, android:largestWidthLimitDp
,
android:requiresSmallestWidthDp
and changing the @media query in the CSS with no luck.
Is there anything I can do to allow my app to look the same but adjust the system dialog so it handles itself correctly?
worklight 6.2
android 4.4.4
cordova 3.6
backbone, jQuery, less
<supports-screens android:anyDensity="false" android:normalScreens="true" android:resizeable="false" android:smallScreens="false"/>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="5" android:versionName="1.0" package="com.EmployeeApp">
<uses-sdk android:minSdkVersion="8" />
<supports-screens android:anyDensity="false" android:normalScreens="true" android:resizeable="false" android:smallScreens="false"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- Push permissions -->
<permission android:name="com.EmployeeApp.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="com.EmployeeApp.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_name" android:launchMode="singleTask" android:name=".EmployeeApp">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="com.EmployeeApp.EmployeeApp.NOTIFICATION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<!-- Preference Activity -->
<!-- Removed preferences activity per defect 20086 -->
<!--activity android:name="com.worklight.common.WLPreferences" android:label="Worklight Settings"/-->
<!-- Push service -->
<!-- In order to use the c2dm library, an application must declare a class with the name C2DMReceiver, in its own package, extending com.google.android.c2dm.C2DMBaseReceiver
It must also include this section in the manifest, replacing "com.google.android.apps.chrometophone" with its package name. -->
<service android:name=".GCMIntentService"/>
<service android:name=".ForegroundService"/>
<!-- Only google service can send data messages for the app. If permission is not set - any other app can generate it -->
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<!-- Receive the actual message -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="com.EmployeeApp"/>
</intent-filter>
<!-- Receive the registration id -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="com.EmployeeApp"/>
</intent-filter>
</receiver>
</application>
</manifest>
Per my comment: try changing the targetSdkVersion to higher than the attempted "14", instead to 19 or 20.
Typically by using a higher API Level, this tells the system to use UI elements that better fit the OS used. The lower the API, the lower the compatibility is with newer OS versions, screen sizes, etc.