Pre-install and deliver app on sd card - android

I need to deliver an app on sd card, and need to make it start automatically after insertion of the card.
What I want to ask is, is this possible to achieve this for the operating systems android, symbian, blackberry and j2me supported phones?
I know that symbian supports pre-installment but how to do auto-start? And on android before version 2.2 non-sd card apps don't supported as i know.

I do not believe you can do this (atleast with my experience with android) without asking for the user's permission. Instead of automatically installing the app, you can start an intent which then asks the user to accept the permissions to install the app. You may also want to look at putting the app on the market (unless it's private) it's only $25 and you can upload an unlimited amount of apps for the rest of your life.

I need to deliver an app on sd card, and need to make it start automatically after insertion of the card.
On Android, that is not possible without custom firmware.
Also, bear in mind that some of those devices do not have SD card slots of any form.

Related

SIM Card Mobile Application Pre Load

Not directly a code related question, though I think this is the right place to ask.
Does anyone know, if so how and which requirements are needed, if it's possible to pre-load an IOS application and/or Android application on a Sim card. After which a user sticks it in their phone and loads them onto the device.
I know it used to be possible with old Nokia phones where the telecom provider loaded an app on the sim card, though not sure how this would work security wise for the current iOS and Android.
If someone could push me in the right direction, it would be well appreciated.
If it's not possible, does anyone know of an alternative solution?
There is no way to access data from the sim card using the iOS SDK apparently, so this would not be possible even if you could fit an app or url to the apps webpage on the sim card.
https://stackoverflow.com/a/15380308/1219956
as for android you can access some info from the sim card, but probably not arbitrary data written to it (which im not even sure how you would get onto the sim in the first place)
How to read Sim raw data on Android?
It's possible, as some network carriers trigger automatic installation of certain apps such as for subscription management. I noticed this when an app from my carrier appeared on my unbranded Android phone, shortly after I inserted my carrier's SIM card.
Most SIM cards support the Java Card platform for this purpose. How exactly a phone OS would interface with this to trigger app installations, I'm not sure, and might be vendor-dependent.
You can find some more information in a DEFCON talk slideset, "The Secret Life of SIM Cards". You should also look up the page on UICC Carrier Privileges in Android documentation.

How do I write an app which takes advantage of a rooted phone?

I know I can use "su" to execute commands as root. Android pops up a user-dialogue to ask whether the app should be allowed to use su, and whether is should remember the user's decision for next time.
Are there things an app can do on a rooted phone, that they can't on an unrooted phone.
If so, what are they, and how are they enabled in the manifest?
I want to make the context plain.
I have a supposedly rooted Android device with no access to the Android marketplace.
I have not yet found a way of downloading apks from the play store without putting information about my phone into Chrome extensions which I do not trust.
I need to write a small app to find out if the device is rooted.
Many apps require rooted devices, so if I can write an app that does the same as them, I will know if the device is rooted.
One of the things I would like to do on this rooted device is to shut it down without user interaction.
Are there things an app can do on a rooted phone, that they can't on an unrooted phone.
Yes, in the same way that there are things that a super user can do on a Linux computer that a normal user cannot.
If so, what are they, and how are they enabled in the manifest?
There isn't really a list of things only available to rooted users. The number of things is long, depends on the device, and likely wouldn't really address your real question anyway.
In short, the answer is that you can perform privileged actions that are typically not available to applications or users using the command line.
In practice, this means you can access restricted parts of the filesystem (such as the Android system directory), including data from other applications (such as the normally protected SharedPreferences). This also means that you can access restricted commands/applications, such as sqlite3 (if installed).
If you are looking for a reason to write an application that leverages root access, you are likely going about this the wrong way. Instead, think of what functionality you want and determine if you need root access after that.

running on an SD card issue

I recently modified all my apps to run on an SD card by specifying
android:installLocation="preferExternal" in the Manifest.xml. They tested out just fine on all my test phones.
It seems like a no-brainer for an app to allow this. But I notice that most of the apps on my phones do not allow running on an SD card. Google Chrome, Google Earth, Dropbox, Google Gmail, GolfNow, etc. In fact none of the Google apps will run on an SD Card.
I'm trying to find out why. What is the downside of running on an SD card?
Thanks,
Dean
This is actually a broad question and you'd really have to ask the developers of those apps to get a definitive answer.
Some ideas...
External storage as it's traditionally known was usually provided by plug in SD cards. An SD card can, of course, be dismounted and/or physically removed by the user meaning none of the apps installed on it will work until it is reinserted.
Certain types of RAM chips have much faster access times than others. Internal RAM on a device might be better suited for processor / computational intensive apps than that of accessing SD cards which tend to have slower access times both at the RAM chip level and also due to having to go through an external bus.
Mission critical apps (depending on the users' defination of what they should be) need to be accessible permanently (see my first point). If a user wants their email to be retrieved at short, fixed intervals, their email app can't be allowed to disappear because the external storage has been dismounted / removed.
There are known problems with some app requirements which cause unpredictable results when the app is installed on an SD card. A classic example is any app which registers a BroadcastReceiver to receive the BOOT_COMPLETED action. Boot completion happens BEFORE various parts of a device are up and running - this includes mounting the SD card. In this scenario, the broadcast is sent but the apps on the SD card aren't running and can't receive it.
As time has gone on, so called 'internal' and 'external' storage definitions have become increasingly blurred - in comparison to several years ago, many Android devices have huge amounts of 'internal' memory making it less important to free up space by installing or moving apps to 'external' storage. Some devices don't even have the ability to add an external SD card and 'external' storage is emulated from a partition on the 'internal' storage.
One other point (tongue in cheek) - perhaps the developers of the apps you mention are egomaniacs and just insist on using up precious 'internal' storage just because they can. ;)
What is the downside of running on an SD card
Depends on the app. If i.e. your app listens to broadcasts, uses Alarm Manager etc. then it must not be on SD card for this to work. If your app is not using any of these, then it simply makes no difference from developer standpoint.

Modify my android to allow user to use only one or two apps?

I'm making an Android app that is used as POS in some business. In order to gain attraction the app is given with the phone, an Internet line and the app. I want to restrict phone calls, whatsapp, SMS and so other. I want the phone to boot directly in my app.
I was looking into Cyanogenmod but couldn't find any information on how to do this.
I mean, isn't it my hardware?
EDIT
I'm open to use other OS.
My device is a Samsung Trend initially.
I've read that you can replace an .apk and start your own app instead of the android menu (I know the user can then change the .apk, so still, it seems the better solution, anyway I couldn't find any information on how to do this)
I'm not 100% clear what you're asking for (you're giving away an entire phone with your app!?) and you didn't mention the phone model or Android version you are using, but there are apps out there which allow you to restrict a phone's ability to run or access certain features. (To find more, just search the Google Play Store for "kiosk".)
Android 4.2 on tablets introduced multiple user accounts, which were expanded in Android 5 Lollipop to phones with "profile accounts", which can be used to restrict access to apps and services. Screen pinning is another feature you can use to lock a particular app to the screen so that it can't be removed without entering a password.
It is your hardware, and as such you can also take more extreme measures by modifying the Android frameworks directly to restrict functionality, by say, removing the dialer. But if you're actually giving away phones with your app, there's always a possibility the new owner will restore the functionality and/or replace the ROM completely.

Android: Is there a uses-feature option for the sd card?

Some of the newer devices coming out from Google do not include an sd card, and it appears they are moving towards this direction.
My question: Is there a way to declare the sd card as a uses-feature to prevent people without an external storage from seeing/downloading the app from Google Play?
I realize this is not the correct way to address the issue, but until i can re-code my apps to anticipate this, I am hoping there is a filtering option in the manifest?
There is no <uses-feature> which does what you want.
What you could do is manually select the devices within your developer dashboard on Google Play. I know this is very inefficient and will probably take a lot of time but it's the only way of achieving exactly what you want.
If you don't want to bother with that then i would recommend that you include this information in your app's description on Google Play and on top of that handle the situation when your application is started up for the first time (for example inform the user that the device is not supported because it has no external storage).
I don't know if such a feature exists, and even if it did it would be difficult to use. I have a Samsung Galaxy Nexus, and while it doesn't have an SD card per-say, it does have 16GB of internal storage. I have seen other phones that say "Internal SD Card" so it really depends on whether that feature (if it exists) can tell the difference between the two. Some devices also have an actual SD card that's hidden from the user, and so they aren't able to tell it's there. Most devices now also have a decent amount of internal storage, so I'm not sure why it's an issue. Do you even need to re-code your application for that? I would think that android would realize that you're requesting storage space that's unavailable and would tell notify the user that they need more storage. All android phones have some amount of internal storage available to the user.

Categories

Resources