Most Inclusive Permssion and Manifest Settings?

10 posts, 1 answers
  1. Jon
    Jon avatar
    6 posts
    Member since:
    Oct 2011

    Posted 19 Nov 2013 Link to this post

    I just published my app to the Google Play Store, but tablets weren't supported. I've been pushing updates based on a few threads here to ensure that permissions are set for tablets. It didn't work. Now my noodling with the permissions and manifest is starting to exclude phones and common devices.

    Is there a best practices to ensure that an app is available on the most devices possible?
    I've attached my manifest and config files.
    Here's the store listing:
    https://play.google.com/store/apps/details?id=com.arborgold.MobileCrew

    <?xml version="1.0" encoding="utf-8"?>
    <manifest android:versionCode="$AndroidVersionCode$"   
                        android:versionName="$BundleVersion$"
                        package="$AppIdentifier$"
                        android:windowSoftInputMode="adjustPan"
                        android:hardwareAccelerated="$AndroidHardwareAcceleration$"
                        xmlns:android="http://schemas.android.com/apk/res/android" >
            <supports-screens
                    android:largeScreens="true"
                    android:normalScreens="true"
                    android:smallScreens="true"
                    android:xlargeScreens="true"
                    android:resizeable="true"
                    android:anyDensity="true"
                    />
     
            <uses-feature android:name="android.hardware.faketouch" android:required="true" />
            <uses-feature android:name="android.hardware.faketouch.multitouch.distinct" android:required="true" />
     
            <uses-feature android:name="android.hardware.location" android:required="false" />
            <uses-feature android:name="android.hardware.network" android:required="false" />
            <uses-feature android:name="android.hardware.gps" android:required="false" />
     
            <uses-feature android:name="android.hardware.location" android:required="true" />
            <uses-feature android:name="android.hardware.telephony" android:required="false" />
            <uses-feature android:name="android.hardware.camera" android:required="false" />
            <application android:label="@string/app_name"
                                     android:icon="@drawable/icon"
                                     android:hardwareAccelerated="$AndroidHardwareAcceleration$">
                    <activity android:label="@string/app_name"
                        android:name=".TelerikCallbackActivity"
                        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
                        android:launchMode="standard"
                                        android:theme="@android:style/Theme.Black.NoTitleBar" >
                            <intent-filter>
                                    <action android:name="android.intent.action.MAIN" />
                                    <category android:name="android.intent.category.LAUNCHER" />
                            </intent-filter>
                    </activity>
            </application>
            <uses-sdk android:minSdkVersion="11" />
    </manifest>


    <?xml version="1.0" encoding="utf-8"?>
    <cordova>
        <access origin="http://127.0.0.1*"/> <!-- allow local pages -->
        <access origin=".*"/>
     
        <content src="index.html" />
     
        <log level="DEBUG"/>
        <preference name="useBrowserHistory" value="true" />
        <preference name="exit-on-suspend" value="false" />
     
        <!-- For projects that target Apache Cordova 3.0.0 only, this <feature></feature> block ensures that button events and App plugin-related functionality will work as expected. -->
        <feature name="App">
            <param name="android-package" value="org.apache.cordova.App" />
        </feature>
     
        <!-- For projects that target Apache Cordova 3.0 and later, comment out or delete the <plugins></plugins> block and its contents. -->
        <!--<plugins>
            <plugin name="App" value="org.apache.cordova.App"/>
            <plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/>
            <plugin name="Device" value="org.apache.cordova.Device"/>
            <plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/>
            <plugin name="Compass" value="org.apache.cordova.CompassListener"/>
            <plugin name="Media" value="org.apache.cordova.AudioHandler"/>
            <plugin name="Camera" value="org.apache.cordova.CameraLauncher"/>
            <plugin name="Contacts" value="org.apache.cordova.ContactManager"/>
            <plugin name="File" value="org.apache.cordova.FileUtils"/>
            <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
            <plugin name="Notification" value="org.apache.cordova.Notification"/>
            <plugin name="Storage" value="org.apache.cordova.Storage"/>
            <plugin name="FileTransfer" value="org.apache.cordova.FileTransfer"/>
            <plugin name="Capture" value="org.apache.cordova.Capture"/>
            <plugin name="Battery" value="org.apache.cordova.BatteryListener"/>
            <plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/>
            <plugin name="Echo" value="org.apache.cordova.Echo" />
            <plugin name="Globalization" value="org.apache.cordova.Globalization"/>
            <plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser"/>
        </plugins>-->
    </cordova>
  2. Steve
    Admin
    Steve avatar
    10941 posts

    Posted 19 Nov 2013 Link to this post

    Hello Jon,

    Unfortunately the Android config.xml is a little misleading at the moment as it does not show you the actual config.xml file that would be used for building your app, rather it shows you a default template which you can build upon. However this default template is combined/merged with any setting applied through the Icenium project properties. This means that you should go the project properties -> Android -> Permissions and delete the
    • RECEIVE_SMS
    • READ_PHONE_STATE
    permissions from it. You can revert the AndroidManifest.xml to its default state, it should not need any other interventions.

    Regards,
    Steve
    Telerik
    You've missed the Icenium Visual Studio Integration keynote? It has been recorded and posted here.
    Looking for tips & tricks directly from the Icenium team? Check out our blog!
    Share feedback and vote for features on our Feedback Portal.
  3. Jon
    Jon avatar
    6 posts
    Member since:
    Oct 2011

    Posted 19 Nov 2013 Link to this post

    Thanks Steve.

    I have already done that.

    The only permissions that I have "turned on" are as follows:

    Camera
    Vibrate
    CoarseLocation
    FineLocation
    ExtraCommandsLocation
    Internet
    WritetoExternalStorage
    AccessNetworkState
    GetAccounts
    ManageAccounts
    BroadcastSticky
    WakeLock

    Thanks,

    Luke
  4. Steve
    Admin
    Steve avatar
    10941 posts

    Posted 19 Nov 2013 Link to this post

    Hi Luke,

    It is not clear from your reply whether everything is fine now or you still need our help. If the latter, please let us know which is the account where your app is developed and I can take a look. However have in mind that troubleshooting Google Play Store supported devices isn't possible as I can't publish your app on Play Store to test whether modifications I make do the job. Also it is not really an Icenium related problem and it might be better to contact Google support on that or post your question on other community forums whether other experienced Google Play users can advise you.

    Regards,
    Steve
    Telerik
    You've missed the Icenium Visual Studio Integration keynote? It has been recorded and posted here.
    Looking for tips & tricks directly from the Icenium team? Check out our blog!
    Share feedback and vote for features on our Feedback Portal.
  5. Jon
    Jon avatar
    6 posts
    Member since:
    Oct 2011

    Posted 19 Nov 2013 Link to this post

    Thanks Steve.

    The issue persists.

    If you're willing to take a look, please do. What information do you need?

    The name of the project is 'MobileCrew_Dev'
  6. Steve
    Steve avatar
    11 posts
    Member since:
    Jul 2012

    Posted 19 Nov 2013 Link to this post

    I need the email adress you use to login to Icenium, where this project is created.
  7. Jon
    Jon avatar
    6 posts
    Member since:
    Oct 2011

    Posted 19 Nov 2013 Link to this post

    richard@arborgold.com
  8. Richard
    Richard avatar
    2 posts
    Member since:
    May 2013

    Posted 20 Nov 2013 Link to this post

    Steve,

    Were you able to find our project?

    Rich
  9. Richard
    Richard avatar
    2 posts
    Member since:
    May 2013

    Posted 21 Nov 2013 Link to this post

    I think I solved my issue. I removed all of the <uses-feature> settings in my manifest except <uses-feature android:name="android.hardware.telephony" android:required="false" />

    Now my app supports more than 2000 devices.
  10. Answer
    Steve
    Admin
    Steve avatar
    10941 posts

    Posted 21 Nov 2013 Link to this post

    Hi Richard,

    Yes, I've found your app. I would suggest removing the <uses-feature> from the AndroidManifest.xml as it
    declares hardware or software feature that is used by the application. You have android.hardware.telephony, which is clearly not a feature that a Tablet would have and although it is set as not required, it might not be respected by Google Play Store.

    Regards,
    Steve
    Telerik
    You've missed the Icenium Visual Studio Integration keynote? It has been recorded and posted here.
    Looking for tips & tricks directly from the Icenium team? Check out our blog!
    Share feedback and vote for features on our Feedback Portal.
Back to Top