我的公司正在向我們的客戶分發硬件(三星Galaxy Tab 10.1)和軟件(我的應用程序)。是否可以通過adb安裝應用程序,但仍然可以獲得Google Market更新?
我的意圖是「跳過」谷歌帳戶鏈接並使用adb將我的生產簽名應用程序直接安裝到平板電腦上(與apk上傳到谷歌市場相同)。這將允許我爲我們的客戶預先配置平板電腦,將屏幕背景更改爲我們的徽標等。
但是,一旦平板電腦已交付給客戶,我希望他們將Google帳戶附加到該平板電腦,並仍然能夠通過市場從我的應用程序獲取更新。在我的測試中,手動安裝的應用程序從未出現在谷歌市場的應用程序列表中。
這可能嗎?
添
更新:我結束了寫「啓動器」的應用程序,我將手動安裝到設備上。它的主題是一個活動:
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
的活動有此代碼:
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);
}
}
可以東西常量到的strings.xml。
它唯一的問題是,即使在我的主應用程序已經被用戶安裝後,它仍然在主屏幕上掛起。由於它(默認情況下)試圖爲我的應用程序啓動LAUNCHER,因此它不是世界末日。
在「live」之前測試它是不是可能的? – mbanzon 2012-01-12 22:00:33
@mbanzon這就是我現在正在做的事情。 – knaak 2012-01-13 12:58:33
請報告你的發現。 – mbanzon 2012-01-13 15:08:55