My company distributes both hardware (samsung galaxy tab 10.1) and software (my application) for our customers.
My intention is to βskipβ the google account link and use adb to install my application signed with the product directly on the tablet (identical to downloading apk I google market). This will allow me to pre-configure the tablets for our customers, change the screen background to our logo, etc.
However, as soon as the tablet is delivered to the client, I want them to attach a google account to the tablet and still be able to receive updates from my application through the market. In my testing, the application that I installed manually never appears in the list of applications on the google market.
Is it possible?
Tim
UPDATE: in the end, I wrote the Launcher application, which I will manually install on the device. He has one activity with the theme:
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
activity has this code:
public class LauncherActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.main); startApplication("applicationnamehere"); finish(); // this kills the activity immediately. } public void startApplication(String application_name){ boolean successfulLaunch = false; try{ Intent intent = new Intent("android.intent.action.MAIN"); intent.addCategory("android.intent.category.LAUNCHER"); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); List<ResolveInfo> resolveinfo_list = getPackageManager().queryIntentActivities(intent, 0); for(ResolveInfo info:resolveinfo_list){ if(info.activityInfo.packageName.equalsIgnoreCase(application_name)){ Intent launch_intent = new Intent("android.intent.action.MAIN"); launch_intent.addCategory("android.intent.category.LAUNCHER"); launch_intent.setComponent(new ComponentName(info.activityInfo.packageName, info.activityInfo.name)); launch_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(launch_intent); successfulLaunch = true; break; } } } catch (ActivityNotFoundException e) { launchMarket(); } if (!successfulLaunch) launchMarket(); } private void launchMarket() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("market://details?id=packagenamegoeshere")); startActivity(intent); }
}
You can stuff constants in strings.xml.
This works well with the only problem being that it freezes on the main screen even after my main application has been installed by the user. Since it (by default) is trying to launch LAUNCHER for my application, this is not the end of the world.
knaak source share