This is a migrated thread and some comments may be shown as answers.

Most Inclusive Permssion and Manifest Settings?

9 Answers 187 Views
Android Devices
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Hannah
Top achievements
Rank 1
Hannah asked on 19 Nov 2013, 02:31 PM
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>

9 Answers, 1 is accepted

Sort by
0
Steve
Telerik team
answered on 19 Nov 2013, 03:31 PM
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.
0
Hannah
Top achievements
Rank 1
answered on 19 Nov 2013, 04:38 PM
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
0
Steve
Telerik team
answered on 19 Nov 2013, 04:48 PM
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.
0
Hannah
Top achievements
Rank 1
answered on 19 Nov 2013, 06:12 PM
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'
0
Steve
Top achievements
Rank 1
answered on 19 Nov 2013, 09:24 PM
I need the email adress you use to login to Icenium, where this project is created.
0
Hannah
Top achievements
Rank 1
answered on 19 Nov 2013, 09:44 PM
richard@arborgold.com
0
Richard
Top achievements
Rank 1
answered on 20 Nov 2013, 08:58 PM
Steve,

Were you able to find our project?

Rich
0
Richard
Top achievements
Rank 1
answered on 21 Nov 2013, 03:17 PM
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.
0
Accepted
Steve
Telerik team
answered on 21 Nov 2013, 03:18 PM
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.
Tags
Android Devices
Asked by
Hannah
Top achievements
Rank 1
Answers by
Steve
Telerik team
Hannah
Top achievements
Rank 1
Steve
Top achievements
Rank 1
Richard
Top achievements
Rank 1
Share this question
or