Extra Android permissions always set

7 posts, 1 answers
  1. James
    James avatar
    5 posts
    Member since:
    May 2013

    Posted 10 Jul 2014 Link to this post

    The APK built by the cloud service has more required permissions than I set in my project settings. Here's the relevant section of my .abproject file (verified it's included in the zip):

    ​"AndroidPermissions": [
        "android.permission.ACCESS_COARSE_LOCATION",
        "android.permission.ACCESS_FINE_LOCATION",
        "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS",
        "android.permission.ACCESS_NETWORK_STATE",
        "android.permission.INTERNET"
      ],


    And here's the set of permissions in AndroidManifest.xml in the built apk:
    android.permission.ACCESS_COARSE_LOCATION
    android.permission.ACCESS_FINE_LOCATION
    android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
    android.permission.ACCESS_NETWORK_STATE
    android.permission.INTERNET
    android.permission.WRITE_EXTERNAL_STORAGE
    android.permission.READ_CONTACTS
    android.permission.WRITE_CONTACTS
    android.permission.GET_ACCOUNTS
    android.permission.RECORD_AUDIO
    android.permission.MODIFY_AUDIO_SETTINGS
    android.permission.RECORD_VIDEO
    android.permission.VIBRATE
  2. Answer
    Tina Stancheva
    Admin
    Tina Stancheva avatar
    3299 posts

    Posted 10 Jul 2014 Link to this post

    Hi James,

    These permissions are probably required by the Apache Cordova plugins used in your app.Please note that some plugins might be explicitly setting hardware permissions for your app. In order to check which ones are affecting your app, you need to examine the plugin.xml for each enabled/included plugin and look for any <uses-permission> modifications.

    Here is a small list of commonly used plugins and their permission requirements:

    • Battery: Does not set additional permissions.
    • Camera: Sets WRITE_EXTERNAL_STORAGE
    • Capture: Sets RECORD_AUDIO, RECORD_VIDEO, WRITE_EXTERNAL_STORAGE
    • Device: Does not set additional permissions.
    • Device Orientation: Sets Access_coarse_location & Access_fine_location.
    • File: Sets Write_external_storage
    • Globalization: Does not set additional permissions.
    • InAppBrowser: Does not set additional permissions.
    • Media: Sets Record_audio, Modify_audio_settings, write_external_storage, read_phone_state
    • Network Information:  access_network_state.
    • Notification: Does not set additional permissions.
    • SplashScreen - Does not set additional permissions.
    • StatusBar: Does not set additional permissions.
    • Vibration: vibrate.
    • PushPlugin: Sets access_network_state, get_accounts, wake_lock, vibrate.
    • Telerik Analytics: Sets internet, access_network_State.

    You can also examine the hardware permissions descriptors in this table.

    Regards,
    Tina Stancheva
    Telerik
     

    Share what you think about AppBuilder and Telerik Platform with us in our feedback portal, so we can become even better!

     
  3. James
    James avatar
    5 posts
    Member since:
    May 2013

    Posted 10 Jul 2014 Link to this post

    Thanks Tina. Removing unused plugins solved the issue.
  4. Flat Rock
    Flat Rock avatar
    2 posts
    Member since:
    Jan 2014

    Posted 23 Jan in reply to Tina Stancheva Link to this post

    Hi, 

    There seems to be an issue with the permissions on android. I build a new version of my application and there a newly added permissions that are not included in any way in the config.xml or the AndroidManifest.xml. Further more the plugins that are selected in the app builder does not contain any of the wanted permissions (Contacts, Audio, Camera etc.) but they are still added. 

    Please advice. Thank you for your time!

  5. Martin
    Admin
    Martin avatar
    89 posts

    Posted 26 Jan Link to this post

    Hi,

    Apart from the permissions coming from plugins, please also make sure that there are no permissions set in the project properties for Android. Please look at .abproject if some permissions are not set (this can also be viewed if you go to your project Properties ->Android -> Permissions  if you are using the In-AppBrowser IDE).

    You may further try switching off all plugins and building the app to further test if some of the plugins are not adding these Android permissions.

    Please note that if you are building in Debug mode the following Android permissions are added in order the LiveSync to work properly (they will not be added when building in Release):
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    Let me know if this has helped.

    Regards,
    Martin
    Telerik by Progress
     

    Visit the Telerik Verified Plugins Marketplace and get the custom Cordova plugin you need, already tweaked to work seamlessly with AppBuilder.

     
  6. Flat Rock
    Flat Rock avatar
    2 posts
    Member since:
    Jan 2014

    Posted 31 Jan in reply to Martin Link to this post

    Hi Martin,

    Thank you for your response. The permissions were set properly. Only requesting the needed once. The reason was due to the plugins section again in Properties->Android->Plugins and is now resolved.

    However I'm confused why  there is no centralized way in controlling the active permissions. Why i think this is important is because you can only access device features using plugins, which from their part set other permissions and overwrite the current you have set in Permissions section. 

    Thank you for your time and the provided support!

    Regards,


     

  7. Martin
    Admin
    Martin avatar
    89 posts

    Posted 02 Feb Link to this post

    Hi,

    I am glad this has helped.

    As you mentioned, using plugins is essentials in Cordova applications to access device features which on other hand require setting Android permissions.

    Each plugin injects its required permissions in the AndroidManifest.xml file during build time - this is both done for convenience (you do not need to manually enter each required permission by the used plugins) but also to make sure that all required permissions are not omitted or deliberately removed as this would cause the plugin that requires them to not work properly.

    Regards,
    Martin
    Telerik by Progress
     

    Visit the Telerik Verified Plugins Marketplace and get the custom Cordova plugin you need, already tweaked to work seamlessly with AppBuilder.

     
Back to Top