TermOne Plus

Terminal Emulator for Android OS

TermOne Plus Icon

Tip: to display screen-shot in full size
hover over small images!

Documents </>

Application Permissions </>

Introduction </>

Every Android application could save its data in several ways. Private data is stored on "internal" storage either as files or database for structured data or preferences for data represented as key-value pairs. Application has full control of its private data, and other applications naturally cannot access them (unless they have root access or access is provided/exposed by application itself). Existence of "internal" storage is guarantied to the applications. Note when the user uninstall application data stored on "internal" storage is removed.

"External" storage is for the data accessible to other applications and the user. Usually is used to save "shared" files such as photos. Existence is not guarantied as "external" storage space could be located at physically removable external devise such as Secure Digital(SD) card. An Android device may have more then one "external" storage.

Now Android devices separate permanent physical storage space into separate partitions for "internal" and "external" storage. And so without removable storage media "external" storage always exists.

Usually "external" storage partitions are mounted in directory /storage. Path /sdcard is symbolic link to mount point of "external" partition from device permanent physical storage space. Name of mount point depends for Android version. Usually it is sdcard0, i.e. absolute path is /storage/sdcard0. Depending of Android version removable "external" storage is mounted in "sdcard1" or in NNNN-NNNN, where NNNN-NNNN is serial number of "volume" (storage space). Some devices use directory /mnt instead /storage. For backward compatibility device that uses /storage provide additional symbolic link in directory /mnt.


[sdcard denied] [sdcard denied]

Permissions </>

To access sensitive user data application must request appropriate permission. At install time system automatically grants "normal" permissions requested by application at there is very little risk for user's privacy or system and device operations. For instance "INTERNET" is considered as "normal". Another category is for "dangerous" permission. This is the case when application would like to access data or resources affecting user's privacy or operations of system, device or other applications. For instance user's data such as contacts or SMS operations requires one or more permission. In the same category is access to "external" storage. Some permissions are grouped. For instance read and write to "external" storage permissions are in group "STORAGE".

Dangerous permissions require user explicitly to grant them. If devices runs Android version before 6.0 (Marshmallow, API level 23) or application maximum target level is 22 system automatically asks the user to grant all dangerous permissions at install-time. If user denies the permissions request, the system cancels the installation of the app.

On Android 6.0 (API level 23) or higher, and if application target level is 23 or higher, the user isn't notified of any application permissions at install time. So on those devices users of installed terminal application may not have access to "external" storage. As is visible on screen-shot to the right, command "ls /sdcard" (list directory content) print error "Permission denied" if "Storage" permission is not granted.


[app info] [app info]

Information </>

Application details could be viewed with activity "App info" accessible from "Settings" application. Along with other details activity shows application permissions. On devices before Android 6.0 "Permission" section lists all application permissions on separate lines. Note they are granted during installation. On Android 6.0 or higher, and if application target level is 23 or higher permissions could be managed at run-time.


[app perm] [app perm]

Management </>

If permissions could be managed at run-time tap on "Permission" section opens activity "App permissions". Activity allows user to grand or revoke application permissions. As pointed above only "dangerous" permissions are subject of run-time management. Permissions requested by application are not listed individually but by their groups. For terminal application it is "Storage" group that control access to "external" storage. Note application itself requires both read and write permissions to the storage.

"TermOne Plus" request one additional permission - "Superuser". Usually such permission in not available on production devices and so it is not listed in activity "App permissions".


[storage granted] [storage granted]

Storage </>

On Android 6.0 or higher, "Permission" section prints summary with granted "dangerous" permissions by groups or informs user that no permission is currently granted.

If "Storage" permission is granted to the application user could return back to it and to use "external" storage.


[sdcard access] [sdcard access]

Usage </>

With granted permissions user could access directories and files on "external" storage.

New Android devices allows external(removable) card to be formated differently according user needs. If is formated as "internal" it is used as addition to the system store and in such case "Storage" permission takes no effect. User and application cannot modify files unless it have system permissions. Only if is formated as "portable" removable card could be used as additional "External" storage. In this case "Storage" permissions is taken into account.


<external>

[round left]
Please report site issues to < webmaster AT termoneplus DOT com >
Copyright © 2016-2018 , Roumen Petrov
Авторското право 2016-2018 , Румен Петров
[round right]