<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.onsite"
android:versionCode="1"
android:versionName="#string/app_version" >
<uses-sdk android:minSdkVersion="8" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" >
</supports-screens>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<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_WIFI_STATE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<application
android:icon="#drawable/icon"
android:label="#string/app_name"
android:name="MainApplication" >
<uses-library android:name="com.google.android.maps" />
<activity
android:label="#string/app_name"
android:name=".Startup"
android:theme="#style/SVSSplashTheme"
android:windowSoftInputMode="stateHidden" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
This is my manifest. If I remove <uses-library android:name="com.google.android.maps" /> I can install export APK and install it in the device but my android map Activity crashing. If I add this line I can't install APK. I am not getting the Application installed.
Can anyone tell me what I am doing wrong? Thanks in advance.
Only a guess without seeing the logcat, but probably you are trying to install onto a device which lacks the libraries implementing the maps api.
If this is a physical device you are out of luck - your vendor did not license this proprietary component from Google. (you could check how supported open street map is on Android?)
If it is the emulator, you need to switch to an AVD based on one of the "Google APIs" images.
Please check your consol if it is giving the error like,missing shared library,then launch a new emulator with android Google API 2.2 or whatever OS you are using,then your map application work perfectly.
Related
I use the cordova 6.4 with that plugin:
cordova-plugin-sms 1.0.5 "SMS"
When I do install it, on Android 4.3 it asks for sms sending permissions and works great.
On Marshmallow however, the APK installs WITHOUT asking any permissions (and of course cannot send SMS until I go manually to application, parameters and allow manually SMS sending)
In my /plateforms/android/AndroidManifest.xml I have that
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="com.proxymis.sendSMS" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="#mipmap/icon" android:label="#string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="#string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="#android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="#string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="24" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
</manifest>
Question: How to set permissions or config so I can send SMS with Marshmallow ?
Below Android 6.0, you ask for them in the manifest (like you did), and you always have access to them.
On Android 6.0 or higher, permissions have to be asked for at runtime.
Google "Android runtime permissions" and you will find loads and loads of guides and posts about it.
I've never worked with Cordova before, so i don't know how that will work, i've only worked with native Android applications. But my best guess is that there is a plugin that can help you.
I've just publish my app to the Google Play store for beta testing, but I can't install it on my Android tablet. The app will not install on my Samsung Galaxy Tab 10 tablet Model number GT-P5113 Android version 4.2.2, but it installs on my Samsung S5 mobile phone with no problem.
When I try to install the app from the Google Play Store it says that its designed for phones and the message is "Your device isn't compatible with this version'. I've checked the 'DEVICE COMPATIBILITY' section and my tablet version is checked.
I have this in my AndroidManifest.xml file:
<supports-screens android:anyDensity="true" android:largeScreens="true"
android:normalScreens="true" android:resizeable="true"
android:smallScreens="true" android:xlargeScreens="true" />
Can someone tell me how to make my app compatible with Android and iOS tablets? Thanks in advance
UPDATE
Here's the complete AndroidManifest.xml.
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="6" android:versionName="0.0.0.0" package="com.myapp.app" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<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" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application android:hardwareAccelerated="true" android:icon="#drawable/icon" android:label="#string/app_name">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="#string/activity_name" android:launchMode="singleTop" android:name="RsgApp" android:screenOrientation="portrait" android:theme="#android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="#string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:name="com.google.android.gms.ads.AdActivity" android:theme="#android:style/Theme.Translucent" />
</application>
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
It is probably your min-sdk attribute. If it is set to 21 (android 5.0), then it will only work on devices with Android v5.0. Your min-sdk needs to be set to API level 17. It could also be an issue with compatibility libraries (if you used widgets only available in later versions of android) and/or themes. This page has more information about the tag, and a little bit about Google Play Filtering.
It's the camera auto focus feature:
uses-feature android:name="android.hardware.camera.autofocus"
I have the same issue with Samsung SM-T110 (Tab 3 Lite);
it does not have camera autofocus so gets excluded from compatible devices.
Still trying to figure out how to remove this from the auto-generated manifest file tho, but hope this sets you in the right direction...
When viewing my app in Google Play on my ASUS Transformer tablet I see the following message
Your device isn't compatible with this version
Here is my manifest file.
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true"
android:versionCode="3"
android:versionName="1.0.2"
android:windowSoftInputMode="adjustPan"
package="com.sheffieldlentinepc.sentenceestimator"
xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- Required permission to check licensing. -->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" />
<application
android:hardwareAccelerated="true"
android:icon="#drawable/icon"
android:label="#string/app_name">
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:label="#string/app_name"
android:name="SentenceEstimator"
android:theme="#android:style/Theme.Black.NoTitleBar"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Is there anything in my manifest that would cause this device to be incompatible?
OK I got it! My situation:
Originally a phone only app
re-designed for tablet optimization
I thought marking this permission to required="false" was all I needed since tablets don't have phones. <uses-permission android:name="android.permission.CALL_PHONE"
**android:required="false"** />
My confusion was the <uses-permission/> and <uses-feature/> after reading this over for the 10th time I finally caught it. http://developer.android.com/distribute/googleplay/quality/tablet.html#hardware-requirements
I needed to explicitly add <uses-feature android:name="android.hardware.telephony" android:required="false" /> to my manifest.
upload to to developer console and you should see the number of "supported devices" jump, 541 devices in my case.
Of course if you have features that require phone use you need to handle it appropriately at run-time for devices that don't have phone.
Adding <uses-feature android:name="android.hardware.telephony" android:required="false" /> to the manifest added support for your AsusTransformer TF101G too!
I hope this helps someone else!
I do not understand why there are some devices not supported..
this is my manifest..
i think the problem depends from minsdk or targetsdk or screen resolution but i don't know where is the problem.
Generally devices unsupported have small screen resolution.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="it.ankic.nasone"
android:minSdkVersion="11"
//----------------------------------------
>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<supports-screens
android:largeScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
//-------------------------------------//
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
//----------------------------------------//
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="app" android:host="nasone"/>
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDaRR2jB_mVyoDe31KFfjXyBiobfGq6sbc"/>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<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" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<permission
android:name="it.ankic.nasone.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="it.ankic.nasone.permission.MAPS_RECEIVE"/>
</manifest>
android:minSdkVersion="11"
android:targetSdkVerion="17"
<supports-screens
android:SmallScreens="true"
android:largeScreens="true"
android:xlargeScreens="true" />
Android Sdk Version tags will check the device os sdk version . and also it will check the permissions for screen supports. four types of screen supports is there. if u release the App in Google play means , then it check the android manifest and device configuaration if it,s ok then only the app will display for thaT Mobile.
Also Users Features tag will affect the App supportabily to Device.
I think the problem is this:
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
because Google Play filter device which support this uses-feature. If the device does not support your glEsversion, Google Play does not propose it on the store.
Try to remove it and give me a feedback.
I am not able to find my app from google play store for HTC explorer and sansung galaxy ace devices, I am supporting small screens as well for the app, still not able to find it on play store
My manifest looks like this:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.demo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
</uses-permission>
<uses-permission
android:name="android.permission.INTERNET"
android:protectionLevel="normal" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.GET_ACCOUNTS" >
</uses-permission>
<uses-permission android:name="android.permission.USE_CREDENTIALS" >
</uses-permission>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" >
</uses-permission>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" >
</uses-permission>
<uses-permission android:name="android.permission.CAMERA">
</uses-permission>
<supports-screens android:largeScreens="false" android:smallScreens="true" android:anyDensity="true" android:normalScreens="true" />
<application
android:icon="#drawable/appicon"
android:label="#string/app_name"
android:debuggable="true">
<service
android:exported="true"
android:name=".account.AuthenticationService" >
<intent-filter >
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="#xml/authenticator" />
</service>
<activity
android:name="abc.com.Screen"
android:screenOrientation="portrait"
android:theme="#android:style/Theme.NoTitleBar" >
<intent-filter >
<action android:name="android.intent.action.MAIN" >
</action>
<category android:name="android.intent.category.LAUNCHER" >
</category>
</intent-filter>
</activity>
</application>
</manifest>
Please tell me if I am doing something wrong here.
I had the same problem. botteaap fix worked.
Add this to manifest
<uses-feature android:name="android.hardware.camera" android:required="false" />
and all worked fine.
it means that the application prefers to use the feature if present on the device, but that it is designed to function without the specified feature,
You likely need to declare camera autofocus as an optional feature (since you are requiring the camera based on the CAMERA permission). I haven't checked but it could be that those cheaper phones do not support auto focus.
For reference: http://developer.android.com/reference/android/hardware/Camera.html and
http://developer.android.com/guide/topics/manifest/uses-feature-element.html (set android:required to false)
There are several steps(pretty long steps) that can help you to verify which devices exactly can download and run your application:
Change or remove any permission in your manifest.
Build application with your release key.
Upload new .apk file to google play dev. console and activate it.
DO NOT PUBLISH it and switch to product details tab.
Check supported devices list via show devices link in Supported Devices section right under countries list. Here you can find list of all "google-known" android devices that can run your application with current permissions.
This way is pretty long, but this could help you.