In Android, you can know what app is used by the user using Accessibility permission.
However, there are some apps that somehow gets this info without using Accessibility permission.
The app Stay Free on PlayStore for example has a feature called "pause app". It does not require any specific permission apart from "Appear on top".
So how does such apps know which app is currently active?
Related
From the android documentation, the ACCESS_BACKGROUND_LOCATION permission should be stated for app that access the background location, user should see the "Allow all the time" option in the permission page of the application.
Yet, there are a lot of sports app, say strava, that track the gps of user continuously, even when app killed or app in background. They didn't even state the permission of ACCESS_BACKGROUND_LOCATION. This can be verify when going to their app permission page, only allow only when using app, ask every time and refuse options are shown. I understand they use foreground service to do such thing, but how come they didn't state for the ACCESS_BACKGROUND_LOCATION permission? Isn't this a must for apps to track user in background as required by Google? Can anyone give me some explaination on this? Thanks
My app uses a background service to stay in sync with our WS and also has access to the users' camera, location, storage and phone state. It's main function is that of barcode scanning, for which I use a 3rd party library.
Recently some of my users that have my app installed on their Samsung devices have reported that they keep getting notifications from an App Permission Monitor regarding my app. It tell's them that "-the app- has been detected using Camera". As if my app is somehow using their phones' cameras while in the background.
Is there any way for me to notify the device that my app is allowed to use the camera and that notifying the user is not needed? Or to somehow not trigger this notification?
Note: I don't check for camera permission or try to access it from my background service.
I found a this article about how to disable the feature but that's on the users' end.
My whole app relies on the fact that location permissions is granted, but when the permissions dialog opens up, there is a button to deny access. Is there a way to remove the deny button, and only allow them to either exit the app or allow the permissions?
I don't think this is allowed as it is overriding an android system feature. Even if you could figure it out it would probably technically violate the Google Play Store terms. (So, you'd have to turn to another market to release to...)
You should just create the UI clear to the user that the location permission is necessary and then display some sort of error message if they deny that, show them a prompt to allow it again before being able to use the app.
You can read more about it here, notice the lines:
Apps that monitor or track a user's behavior on a device must comply with these requirements:
...
Apps must not hide or cloak tracking behavior or attempt to mislead users about such functionality.
This page explains why and how to show your user why your app needs a certain permission.
In short, without resorting to an off brand kernel of android found on the web or something, you probably can't very easily and shouldn't anyway. (For both moral reasons, legal ones, and because like you can just show a dialog box to explain to the user why they should allow the permission... not that hard. If they want to use your app then they will allow it. Simple as that.)
I don't think it is possible. You can't hide the deny option in the app permission option.
the whole point of google giving these option was to try to protect user privacy.
The best option would be to convince the user why they should allow you the location permission.
And now Google has enforced a more strict policy for the app developer. And any unethical way can make your app banned or even worse your dev account ban.
No, I don't think so that you can take control over the allow and deny options in permission because
All the permissions are divided into two categories normal and dangerous permission (also called Runtime permission), the normal permission are automatically granted as you install the app but the dangerous permission needs a runtime permission from API level 23 (Marshmallow) and here's the lame catch for you since the pre Marshmallow devices doesn't had any concept like Runtime permission, so the solution you want will only work in pre Marshmallow devices (and obviously that's not what you want)
The permission dialog isn't handled by the application, the OS takes care of this.
Here's the official link to the Android guide to App Permissions
You can't control the permission request, but.
You could have a view that prompt user to enable location permission which will prompt the location service to be switch on if it is not switched on and allow permission to your app to access location data.
In your application class, you can create a listener that listens for the status of the location service, if its on or off. you can also check if permission is given on by the user to access location in the listener. so at any point, the status change. your listener acts accordingly
Is it possible to have an app block other apps even if you restart the device?
Android provides the ability to draw over other apps (Tutorial here). In combination with an accessibility service, you should be able to detect when a user attempts to interact with a particular application and draw over that app.
The user needs to enable the permission though, so you can't really "block" the app permanently.
Source: I wrote an application that uses an accessibility service to detect Japanese Kanji in tapped areas in other apps. The app then uses the "draw over other apps" permission to show an info panel about the parsed Kanji.
I was thinking if Android applications or harbour applications can launch other application like Android/harbour application launching native applications OR other android or harbour applications? because this could be security risk if user permissions are not taken for the same or user permissions of launched application are used by applications launching these apps.
SailfishOS allows an QML application to ask the launcher to launch other application via Qt.openUrlExternally(). You can launch a given file/protocol handling app, or a given app via pointing its .desktop file.
The new application is launched by the launcher and there is no possibility for remoting a launched app, so unless the launched app is not dangerous in itself, you cannot force it to do something user would not do. But who would install & run "dangerous" app anyway? And you cannot sideload an random app, as the interfaces required to do so are not allowed in Harbor.
Also, you cannot abuse user permissions, as there is only one 'nemo' user running all user level apps and there is no direct root access. (You can enable developer mode and gain root access via devel-su, but that requires knowing devel mode password.)
Android layer (Alien Dalvik) has all the usual Android protection mechanisms in place.