Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将一个应用程序无缝替换为另一个应用程序_Android - Fatal编程技术网

Android 将一个应用程序无缝替换为另一个应用程序

Android 将一个应用程序无缝替换为另一个应用程序,android,Android,我在Play Store上有两个非常相似的新闻应用程序,我们称它们为应用程序A和应用程序B,应用程序B类似于应用程序A,但具有高级功能。现在,我希望我所有的应用程序A用户都能无缝迁移到应用程序B。为此,我希望通过一个名为“立即升级到B”的按钮,将应用程序更新推到A。当按下按钮时,我想做两件事。一个是检查B是否未安装,如果不是,我想开始下载应用程序B,然后继续安装。一旦安装了应用程序,或者已经安装了应用程序,我希望将登录信息传递到应用程序B,并打开其主页(可能使用intents)。第二个是在迁移到

我在Play Store上有两个非常相似的新闻应用程序,我们称它们为应用程序A和应用程序B,应用程序B类似于应用程序A,但具有高级功能。现在,我希望我所有的应用程序A用户都能无缝迁移到应用程序B。为此,我希望通过一个名为“立即升级到B”的按钮,将应用程序更新推到A。当按下按钮时,我想做两件事。一个是检查B是否未安装,如果不是,我想开始下载应用程序B,然后继续安装。一旦安装了应用程序,或者已经安装了应用程序,我希望将登录信息传递到应用程序B,并打开其主页(可能使用intents)。第二个是在迁移到B后删除应用程序A。如何尽可能无缝地完成此操作,以便给应用程序A的用户一个开始使用更好的应用程序B的机会,并在后台自动进行转换?
我浏览了一些帖子,有人下载了定制的APK,然后以编程方式安装了它。因此,我可能要做的是从我的服务器下载B的apk,然后在用户授予install_PACKAGES权限后安装它。这是正确的方法吗?

一旦用户单击安装按钮。检查应用程序B是否已安装,否则您可以将其指向应用程序B的playstore,使用以下代码实现此目的

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Add respective layout
    setContentView(R.layout.main_activity);

    // Use package name which we want to check
    boolean isAppInstalled = appInstalledOrNot("Package name of your App B");  

    if(isAppInstalled) {
        //This intent will help you to launch if the package is already installed
        Intent LaunchIntent = getPackageManager()
            .getLaunchIntentForPackage("Package name of your App B");
        startActivity(LaunchIntent);

        Log.i("Application is already installed.");       
    } else {

        // Redirect to play store

        Intent i = new Intent(android.content.Intent.ACTION_VIEW);
        i.setData(Uri.parse("https://play.google.com/store/apps/details?id=Package name of your App B"));
        startActivity(i);.


        Log.i("Application is not currently installed.");
    }
}

private boolean appInstalledOrNot(String uri) {
    PackageManager pm = getPackageManager();
    try {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
    }

    return false;
}}

希望我为您提供了一个解决方案:

我不希望将用户带到play store。它必须是无缝的。点击按钮后,用户将只看到活动指示器。下载包应该在后台进行。如果用户必须用许可警报授权安装,那么首先下载APK到一个特定的路径,以引用这个链接,然后使用下面的代码“意图提示安装=新ItPuttNo.ActPyVIEW.StDATAAN和Type URI.PAR”打开您所存储的特定路径的APK。secontent:///path/to/your.apk,application/vnd.android.package-archive;startActivitypromptInstall;'