用另一个应用程序无缝替换一个应用程序

时间:2019-04-17 07:27:41

标签: android

我在Play商店中有两个非常相似的新闻应用程序,我们称它们为应用程序A和应用程序B(B与A类似,但具有高级功能)。现在,我希望所有应用程序A的用户无缝迁移到应用程序B。为此,我希望使用标题为“立即升级到B”的按钮将应用程序更新推送到A。轻按按钮时,我想做两件事。一种是检查是否未安装B,如果不是,我想开始下载应用B,然后继续安装它。一旦安装了应用程序或已经安装了该应用程序,我希望将登录信息传递给应用程序B并打开其主页(可能使用意图)。第二个是删除迁移到B的应用程序A。如何尽可能无缝地完成此操作,以便使应用程序A的用户有机会开始使用性能更好的应用程序B,并且转换会在幕后自动进行? 我浏览了几篇有关下载自定义apks,然后以编程方式安装它的文章。因此,大概我可以做的是从服务器下载B的apk,然后在用户授予INSTALL_PACKAGES权限后安装B。这是解决这个问题的正确方法吗?

1 个答案:

答案 0 :(得分:0)

一旦用户单击安装按钮。检查是否安装了应用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;
}}

希望我给您一个解决方案:)