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