I cant find out why my app is not supported on many devices like Xperia Z or Samsung Galaxy S4 and many more. Especially the newest devices and tablets are not supported.
Here is my manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.baoss_CDB"
android:versionCode="3"
android:versionName="1.2.1" >
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true"
android:resizeable="true"/>
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:name="com.baoss.Misc.MyApplicationContext"
android:icon="#drawable/cdb"
android:label="#string/app_name"
android:logo="#drawable/cdb"
android:theme="#android:style/Theme.NoTitleBar" >
<activity
android:name="com.baoss.LoginActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.baoss.MenuActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
...
<activity
android:name="com.baoss.SettingTermsOfUseActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" >
</activity>
</application>
I hope you can help me=).
One thing I can notice is about
<uses-permission android:name="android.permission.CALL_PHONE" />
Infact that permission implies android.hardware.telephony features, which is generally available just on phones and not in tablets. Try marking that feature as not required:
<uses-feature android:name="android.hardware.telephony" android:required="false" />
Don't forget to check at runtime if the current device has phone capability:
PackageManager pm = getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)){
//Add the code for making call
}else{
//Add the code for devices where telephony is not present, if needed
}
Related
I want to run my android app only on tablet , but it's running in phone also.
My Manifest file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.sample">
<supports-screens
android:largeScreens="true"
android:normalScreens="false"
android:requiresSmallestWidthDp="600"
android:smallScreens="false"
android:xlargeScreens="true" />
<uses-feature
android:name="android.hardware.screen.landscape"
android:required="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:roundIcon="#mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="#style/AppTheme1"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name=".MainActivity"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Can we run the app in generic phones when we apply android:normalScreens="false" & android:smallScreens="false" in supports-screens tag in android manifest file
You can do this:
In your first activity use this and get the size of the screen
If the size is not a tablet size, make a alert that say this app is only to tablet, then show a white screen/ another thing
I am currently working on an app for my University, and everything is working great. Except Tablet compatibility. Below is my AndroidManifest file, does anypne have suggestions on what is wrong. The play store says "This app is not compatible with this device"
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rmu.mobile.tcdev"
android:versionCode="3"
android:versionName="0.0.3" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
<uses-permission
android:name="android.permission.CALL_PHONE"
android:required="False"
/>
<uses-permission
android:name="android.permission.INTERNET"
/>
<supports-screens
android:resizeable="true"
android:smallScreens="true"
android:normalScreens="true"
android:anyDensity="true"
android:largeScreens="true"
android:xlargeScreens="true"
/>
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/RealTheme"
android:uiOptions="splitActionBarWhenNarrow"
android:allowBackup="true"
>
<activity
android:name="com.rmu.mobile.tcdev.RMULayoutsActivity"
android:label="#string/app_name"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- <activity android:name=".ActionItemsSampleActivity" /> -->
</application>
</manifest>
android:required is not a valid attribute for uses-permission. Instead, you must add
<uses-feature android:name="android.hardware.telephony"
android:required="false" />
This depends on what the device you are running on it has installed. You have a min SDK version of 8. There are many devices that are running below that. Also, taking a look at my own code, the "supports screen" category is not 100% necessary.
My app https://play.google.com/store/apps/details?id=com.picturesexperience.camera is not visible on any mobile device. Installs with no problem from the APK file (that is actually how I distribute my app right now), works perfectly, but for some reason Google Play doesn't list it. Any suggestions.
The app uses QR code scanning library from Zxing, everything else is custom coded.
The app's manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.picturesexperience.camera"
android:versionCode="2"
android:versionName="1.4" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" />
<uses-feature android:name="android.hardware.CAMERA" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name="com.picturesexperience.camera.MainActivity"
android:label="#string/app_name"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".CameraActivity" android:label="#string/app_name" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" />
<activity android:name=".UploadActivity" android:label="#string/app_name" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" />
<activity android:name=".LoginActivity" android:label="#string/app_name" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" />
<activity android:name=".PictureViewActivity" android:label="#string/app_name" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" />
<activity android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
<uses-feature android:name="android.hardware.CAMERA" />
...should be...
<uses-feature android:name="android.hardware.camera" />
The uses-feature is case sensitive and lower case, so in effect you're stating that you're using a feature that does not exist on any device.
Case sensitive
Permissions and features are case sensitive. Try with the following instead:
<uses-feature android:name="android.hardware.camera" />
Required=false
Also make sure to add android:required="false"for max device compatibility. Otherwise devices without back camera (like nexus 7 tablet) will still be ruled out.
<uses-feature android:name="android.hardware.camera" android:required="false" />
More information here: http://developer.android.com/guide/topics/manifest/uses-feature-element.html
I have face this problem, but after searing a few hours i got a solution in my app.
I am using
<uses-feature android:name="android.permission.READ_PHONE_STATE" />
while its should be
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
So that i want to say that please check carefully your permissions and feathers. Also remove those permission which is not required in your application this thing will increase support device.
I hope it will work for you.
I know it is late to answer, I face the same problem. With setting all users-features as false, play store still shows zero devices supported.
Here is solution, hope will help someone
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
Also
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
Hope it help.
You can check why your app is incompatible by checking the device catalog:
Select device catalog from menu
Show all devices
Then select any device, click on the blue arrow to see details and check the entry 'track status'
I have the following AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.app"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="17" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="#string/app_name"
android:theme="#style/Theme.Transparent" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="my.app.layouts.Dashboard"
android:configChanges="keyboardHidden"
android:label="#string/app_name" >
</activity>
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="false"
android:screenOrientation="landscape"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden" >
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
As you can see it uses the ZXing library to read a barcode. The app however is not getting shown on certrain devices (such as the Nexus 7) in Google Play.
How can I include ALL devices since I do my error handling inside the App itself (For example show dialogs if camera is not available etc.)?
Use uses-feature as well as this at the end: android:required="false"
Also I'm not sure if you need the support any-density part in your AndroidManifest.
instead of uses-permission use uses-feature and set the flag to optional
uses-permission sets uses-feature to required by default
I created an Android app with Phonegap. When the app runs and I flip the phone into landscape it simply crashes. I already tried adding this to my manifest:
android:configChanges="orientation|keyboardHidden"
also tried:
android:configChanges="orientation|screenSize|keyboardHidden"
No effect. Any suggestions?
Update:
This is what logcat tells me when the app crashes: http://dl.dropbox.com/u/17844821/zeug/logcat.txt
Update:
This is my manifest file:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.foo.bar"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="15" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"
android:anyDensity="true" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:configChanges="orientation|keyboardHidden"
android:name=".MainActivity"
android:label="#string/title_activity_main">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Make sure that put those in the activity tag like this:
<activity
android:name=".MainActivity"
android:label="#string/title_activity_main"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize
|locale">
and close it after them.
I have this problem once and I made this mistake.
Do you have the INTERNET permission in your AndroidManifest.xml? Based on the exception it looks like the CallbackServer can't open a socket which would cause a bunch of problems.