I would like to create an app to monitor the communication between applications on my android. for example app A access my contacts 10 times; my app should be able to give me that info.
any idea what I should use? the permissions? what android class will be good to look into ?
Fortunately, what you want is not possible in general, for bindlingly obvious privacy and security reasons.
In the specific case of wanting to monitor other apps' use of ContactsContract, you are welcome to download the Android source code, modify it to leak this information by one means or another (e.g., log it), and create a ROM mod from your revised version of Android. Installing that ROM mod on your device would then allow you monitor those communications. Outside of this, the most that you can do is set up a ContentObserver to see if apps change contact data, but you will not know what apps make those changes, let alone general read access to contacts.
Other aspects of Android app functionality might be monitorable on rooted devices without a custom ROM mod, and there is the occasional thing that can be monitored even without root.
Related
For a POS system is there a way or ways to make an application harder to close?
The desire is to have employees be able to use the device and the application, but not use other applications.
The implementation does not necessarily require a password. So far the answers I have seen on similar questions suggest this is not possible. Except in Lollipop per this question : How to make an app unclosable?
Are there any options for older APIs?
Or am I just out of luck?
That is not possible as a feature of the API since the Android system is in control of what is executed or stopped. And that could mean that your app gets stopped for a number of reasons.
To achieve what you are asking for you will need to create your own distribution of the system. I have no experience of doing that but it basically means creating a rom and distribute it.
That would of course be an option if the device running the POS app is only used for that particular task.
Hi I have been tasked with investigating the feasibility of developing an anti-malware app for Android. I am led to believe that Android apps run in their own 'sandbox' and have no permissions to scan outside that sandbox.
How is it then, that apps (eg. antivirus) already exist that must be able to test files in other apps' areas? I don't imagine an antivirus program would be very effective if it could not test files phone-wide. How would this be done?
Thanks for any advice!
It is true that an app is run in their own 'sandbox' but it doesn't mean it is confined to not access outside the sandbox. I'm assuming by sandbox you mean the apps virtual machine or something of that sort.
For instance you can exchange information and talk back and forth between 2 apps using Intents, which lets you grab information from one app into the other. Again there are 2 ways of looking into it, this can be considered as a feature which lets you access outside stuff or as a security vulnerability. Which leads back to glass half-full or half-empty scenario.
I'm not sure if I understand your dilemma correctly. But hope this helps.
I need a device that runs only one custom application and does not allow the Users to access any other features. Building a complete device would involve a lot of time and money for sure(only if this can be done with android). This can usually done for each android device seperately. It could be better if there could be simply a piece of code that can be simply executed on the device that installs the application and at the same time restricts the device as per requirement.
Could someone advice me a way to implement in the Android devices. Is it something possible :(
Would also like to know if the same is possible with iOS..
Thanks..
If you want to be absolutely sure that users cannot do anything but accessing one specific app, the only way to do this is to create a custom ROM that allows to install your app only.
Currently I am developing an android application. This application should load when the device boot and it should restrict all the inbuilt & other applications. I have searched in forums as it can be possible by make our ROM customized. But this process can be do manually by ourselves. I want to make this by coding. Or is there any other way to make my application default?
If you want your app to be default - yes, you haven only way to build your own custom android.
Only what you can do on your default android system is to automatically load your app after OS have loaded.
You're not stating precisely what you intend to do. The words restrict and default can mean a lot of things.
Despite what dilix writes, one way you might succeed with what you want is if you make your app a launcher. A launcher plays an interesting role in the system.
However, you cannot force anyone to really use it. But that wouldn't be possible either way, right? Unless you talk to device manufacturers.
(Sorry for my english)
I'm new using Android (in fact, I'm just testing android) and I have a lot of questions...
Well, let me explain you the situation. In this moment, in my job, I am writing my code with C# and run it on Windows Mobile 6, the apps are used to make sales, send bills, reserves, etc. The devices (iPAQ 216) are given to the salesmen, and they must use the apps and update them via internet.
Each salesman have a unique client list, unique data and (in some cases) an unique set of apps, which means that I need to prepare a different package for each salesman. Using a Microsoft tool (cabwiz) I can prepare automaticaly a different package for each one of the 150 salesmen. They download their specific package using a tool wirtten by me, and install it and everyone is very happy (maybe)...
Is that possible in Android? How? and if it is not possible, do you know an idea how to accomplish somewhat like that...?
It's not going to be as easy as cabwiz, I can tell you that. But it would be possible, theoretically, to write a script that modifies/generates the unique portions of the source and then compiles a new copy for each user.
If the only difference between the apps is the data on them, then there is no need to generate a different package for each user: have the app download the data from your server and save it after the app is installed. You could also make some modules (I can only guess what kind of functionality you're talking about with regards to different apps per user) only accessible to particular users.
Yes, it's possible however:
You may want to look into writing in java rather than C# as that's more officially supported on android
There are some limitations of the android APIs, in particular there are basic behaviors of the device that can't be altered - without rooting there's no equivalent to the "hook" functionality of windows.
Make sure you get devices with the menu option to enable installation of applications from 'unknown sources'; otherwise deployment will be a lot more difficult. At that moment, this amounts to avoiding AT&T, as their devices presently confine you to the android market or physical connection to a machine running the developer tools as distribution channels. (As a work around you can upload your apps to the market and not publish them, though that won't fully keep them private unless you also include something to require authorization when they run. You could also install the minimal set of dev tools on the salesmens' laptops)
You will probably want to learn about the command-line application build tools and scripting in order to generate a custom apk for each salesman. Once the devices are set to allow unknown sources, you should be able to email the salesman the apk (or a link to it) as an attachment. You should also be able to make the custom apk refuse to run except on a device matching some fingerprint data you've previously collected. While you can develop for android under windows, you may want to look into switching to linux in order to make some of this scripting a little more natively elegant.