Best way to make system (stock) app - android

Here's the scenario. I have been asked to make an application which requires several system app only permissions. This is because the tablet is going to be used by employees and it needs to be locked down ect.
Is there is a programmatic way install a system app instead of installing it as a user app? If not what is the best way to make and install the system app to the tablet without rooting it if possible?

You have to root it. To be a system app, you need to be installed with the OS or as part of an OS update. That's the entire point of being a system app- the user can't have installed it. You'll need to root the device to put it on.

Related

How to create Apps in android which can't be uninstalled? Can we make System apps?

We are providing one default app for our customers with android phone. Which user can not be uninstall. I have used Device Admin feature from this example But user can delete app by deactivate from settings.
Another possible way I have found to install app in System/apps folder like all google apps (I am not sure).
For that I need to root access, so I am planning to do following, But not sure how to implement it.
Programatically Root device
Install app in System/apps folder
Unroot device again
Like many System apps, How they are doing for such kind of feature ?
Please help.
I made custom Launcher, which can't be uninstalled.
Important: root the phone
install application as system application (install into /system/app) from recovery mode.
Optional: subscribe for package removal, check if user tries to delete your app - and don't allow him to do this action (close package removal activity)
I made archive, which can be installed from recovery mode. Also my Launcher requires custom Superuser application (I don't want see notifications from Superuser app, when my Launcher runs root commands - silently give root access to my Launcher).
What I have in result: Launcher application, installed as system app (can't be removed). Also I blocked other launchers installation, added white list of allowed applications (don't install applications, which can manage file system and modify something important).
This solution full of tricks, but it's easier to implement than custom ROM.
If you customize the ROM, and install it to device somehow (contact device manufacturer from China for ex., request target device drivers and build the ROM on device), you can sign your application with system key, place it with other system apps, and then it can't be removed. In this case root not needed, but it requires much more time and power to implement.
If you will root device programmatically, than you should have exploit, which makes rooting. And different devices are rooted differently.
It's simple there is something like Device Administrator but please note that user will be prompted to enable admin mode on installed app.
HERE you can find quite good example description and tutorial - please try.

How does TabPilot remotely install apps without user interaction?

I want to build an app that would remotely install other apps on controlled tablets.
I know from the Android SDK documentation that you cannot install an APK programatically without user interaction, and rightfully so!
However, it looks like Tab Pilot http://www.tabpilot.com/ does this in background.
Any idea on how they do it? Apparently, the tablet needs not be rooted.

In Android, preinstalled apps are always disable to uninstall?

Just that, I like to know is always all the preinstalled apps are with the uninstall button disable in Android.
If I am reading your question correctly, some of the pre-installed apps can't be uninstalled without rooting your phone using cyanogenmod or rooting your phone.
Some pre-installed applications can be uninstalled. For example in Android 4 (ICS) you can go to Settings -> Apps and select the "All" tab. There you can uninstall some of the preinstalled software.
Root the phone, put the APK into the /system/app folder and then unroot the phone. This is possible on a Droid 4 at least in theory. Not sure about other hardware models. If you can root and unroot the phones it should work.
This depends on the Device manufacturer. They have the possibility to install the app in any way they like before they freeze the image and flash it to the hardware in the factory.
For example some of the Branded apps might be installed under system privileges, but some of the more "friendly recommendation" apps might be free to uninstall.
From what i understand in ics apps in usolder can be uninsfreeled, apps in system folder instead of uninstall the button reads disable. Except for only s slight few only, these apps are reQuired by the os for the user to be able to"enable" a disable App, so i think i the app needs to be signed by the room cooker our needs top have a intent in the manifest like a launcher or home app (since if you disable your home launcher you bricked your phone, so you can't disable it, but if you give your app a intent label of copied from the Android source launcher then the phone will think it's a launcher, and not let you disable it, you will prob have to set the home launcher back to be default or Android will ask you witch launcher too use Every time user hits the home button, i was looking for the same answer found this page
Android 4.0 Api to Disable Apk Witch gave me the idea, currently thus reply is closest I've come to impinging the idea, i well be trying it soon, if you beat me to it, let me know tour results, and i well do the same.
And to install a app in /system/app a uninstall.zip won't do it, you need too root the phone, install the app, xfer it to system (i use system/app mover available in the play store free, the too secure ot Unindtsll app mover, and unroot, any way good luck.
P.s. I'm Not a Dev, i just understand the format format of the app language, and can c effectivly search for info, so please no code questions. i can't answer them, but google can.

How to find whether an Android stack in phone is Original or Jail-broken?

I would like to know how to find whether an Android stack in phone is Original or Jail-broken?
My Intention :
My application will check for the genuineness of the Android OS in phone.
If it finds that, the phone does not have a genuine Android, it will not allow the application to install on phone.
Is it possible to implement this?
Thanks,
Sen
Check if you can "su" on the phone with an installer application. If you can't, install your apk as you please.
You cannot prevent installation of your app - there are no pre-install hooks for you to do that.
What you can do however, is use #Nacho L's method once installed to prevent your app from running.
Of course, if the phone is rooted, then there's nothing you can do to prevent your app from running if the user is determined to run it.

How would you uninstall a rogue Home (Launcher) application?

If you were to install a Home Screen application that does not give you access to the System Settings screen (to go to Manage Applications), and also does not let you launch Apps (such as the Market App or 3rd party install/unistallers), is there ANY way to uninstall such an application?
I know that Android requires your permission before letting a new App take over the home screen privilege. But say you're trying a newly published Launcher app that is buggy (or malicious). You are of course still going to tell Android it's ok to give this App the Home screen privilege. Now once it is installed, your phone is now effectively useless?
Is there a way for a typical end user (who doesn't have Eclipse/ADB) to get out of this situation? Other than doing a complete factory reset?
I realize there are ways to uninstall an App via ADB ("adb uninstall package.name")
But it seems like a typical end user is potentially screwed if they ever install such a malicious/buggy app. This seems like a gaping security hole in Android, no?
You are right, there is no nice way of uninstalling such an application from the Android device itself. The only solutions are the ones you are mentioning, factory reset (which is difficult for most users, if the settings menu is not accessible) or using adb.
I wouldn't call it a security issue, but it could certainly be a problem for users that are not careful about what they are installing.
One of the big selling points about Android, that really puts the system way ahead of the competition, is the possibility to replace any app you don't like with something you download and install yourself. ("All applications are created equal.")
The price to pay for this freedom is that there are rogue applications that will try to take over.
Someone on StackExchange posted a very helpful solution to this problem. It seems that in addition to a factory reset, most phones also support a Safe Mode that disables other Home/Launcher apps that have been installed (at least that's what it did on my Droid X). This allows you to then uninstall the offending application. Then simply reboot again back into normal mode to get your old phone back.
There's actually an easier solution these days, surely? Use the market.android.com website to install a new homescreen app remotely onto your device. Once you've done this, hitting the home button will once more bring up the list of homescreen apps to choose from, and you can select a non-malicious, non-buggy one, and then use that to uninstall the evil one.

Categories

Resources