android - 是否可以通过 adb 安装应用程序但仍然获得 Google Market 更新?

标签 android apk adb google-play

我的公司正在向我们的客户分发硬件(三星 galaxy tab 10.1)和软件(我的应用程序)。

我的 Intent 是“跳过”google 帐户链接并使用 adb 将我的生产签名应用程序直接安装到平板电脑上(与我上传到 google market 的 apk 相同)。这将使我能够为我们的客户预先配置平板电脑,将屏幕背景更改为我们的 Logo 等。

但是,一旦平板电脑交付给客户,我希望他们在平板电脑上附加一个谷歌帐户,并且仍然能够通过市场从我的应用程序中获取更新。在我的测试中,我手动安装的应用程序从未出现在谷歌市场的应用程序列表中。

这可能吗?

蒂姆

更新:我最终编写了一个“启动器”应用程序,我将手动将其安装在设备上。它有一项 Activity ,主题是:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

Activity 有这个代码:

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,所以这不是世界末日。

最佳答案

这应该是可能的 - 查看 Titanium Backup 的作用。它具有 Market Doctor 功能,可以在您使用 Titanium Backup 恢复 apk 和数据文件后重新建立到 Android Market 的链接。

您还可以尝试将出厂图像加载到某些手机或平板电脑上,跳过帐户创建过程,并查看包含的应用程序(如 Youtube、Facebook、Gmail、 map 等)的市场数据库是什么样子的。

关于android - 是否可以通过 adb 安装应用程序但仍然获得 Google Market 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842890/

相关文章:

java - FileObserver 不适用于 Android 6.0 Marshmallow (API 23) 中的外部存储

c# - 如何绑定(bind)使用转换器格式化的文本?

android - 如何在android中将位图设置为intent

Android如何判断滑动菜单是否可见

java - 如何将数据从列表适配器发送到 android 中的 Activity ?

android - Android Market 上免费和付费版本的 APK 是否相同?

android模拟器从emulator-5554重命名为一个唯一的字符串

android - 通过 ADB 打开飞行模式(Android 4.1 或更早版本)

java - 阻碍android应用程序的反编译?

android-studio - Android Studio build/apk 不可见