Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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
Java 如何在我的应用中使用应用内更新API_Java_Android_Android Studio_In App Update - Fatal编程技术网

Java 如何在我的应用中使用应用内更新API

Java 如何在我的应用中使用应用内更新API,java,android,android-studio,in-app-update,Java,Android,Android Studio,In App Update,我发现了两个我认为正确的链接,但是在构建代码之后,它什么也没有显示。我正在添加两个应用程序中的一个,最近构建了一个应用程序 注意:-代码和链接有不同的代码 代码 public class TestingActivity extends AppCompatActivity { private static final String TAG = "ResTest"; private CoordinatorLayout coordinatorLayout; @Overri

我发现了两个我认为正确的链接,但是在构建代码之后,它什么也没有显示。我正在添加两个应用程序中的一个,最近构建了一个应用程序

注意:-代码和链接有不同的代码

代码

public class TestingActivity extends AppCompatActivity {

    private static final String TAG = "ResTest";

    private CoordinatorLayout coordinatorLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_testing);
//        coordinatorLayout = findViewById(R.id.res_test);
        // Initialize AppUpdateManager. AppUpdateManager helps to Manages operations that allow your app to initiate its own updates.
        final AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(TestingActivity.this);
        // Requests the update availability for the current app, an intent to start an update flow, and, if applicable, the state of updates currently in progress.
        Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
        // InstallStateUpdatedListener is listener that used to monitor updates installs.
        final InstallStateUpdatedListener installStateUpdatedListener = new InstallStateUpdatedListener() {
            @Override
            public void onStateUpdate(InstallState installState) {
                // If successfully download then call popupSnackBarForCompleteUpdate() to show snackbar of successfully downloaded latest update.
                if (installState.installStatus() == InstallStatus.DOWNLOADED) {
//                    popupSnackBarForCompleteUpdate(coordinatorLayout, appUpdateManager);
                    Toast.makeText(TestingActivity.this, String.valueOf( appUpdateManager.completeUpdate()), Toast.LENGTH_SHORT).show();
                }
            }
        };
        // Checks that the platform will allow the specified type of update.
        appUpdateInfoTask.addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
            @Override
            public void onSuccess(AppUpdateInfo appUpdateInfo) {
                if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
                        // As it's flexible update so use FLEXIBLE.
                        appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {

//                    Log.d(TAG, "app here 1");

                    // Request the update.
                    try {
                        appUpdateManager.registerListener(installStateUpdatedListener);
                        // Starts the desired update flow(HERE is FLEXIBLE update).
                        appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, TestingActivity.this, 100);
                    } catch (IntentSender.SendIntentException e) {
                        e.printStackTrace();
                    }
                } else {
                    if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
                        popupSnackBarForCompleteUpdate(coordinatorLayout, appUpdateManager);
                    }
                }
            }
        });
    }


    private static void popupSnackBarForCompleteUpdate(View view, final AppUpdateManager appUpdateManager) {
        Snackbar snackbar = Snackbar.make(view, "An update has just been downloaded.", Snackbar.LENGTH_INDEFINITE);

        snackbar.setAction("RESTART", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                appUpdateManager.completeUpdate();
            }
        });
        snackbar.show();
    }

}
公共类测试活动扩展了AppCompatActivity{
私有静态最终字符串TAG=“ResTest”;
私人协调人布局协调人布局;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testing);
//坐标布局=findViewById(R.id.res_测试);
//初始化AppUpdateManager。AppUpdateManager有助于管理允许应用程序启动其自身更新的操作。
最终AppUpdateManager AppUpdateManager=AppUpdateManager工厂.create(TestingActivity.this);
//请求当前应用的更新可用性、启动更新流的意图,以及当前正在进行的更新的状态(如果适用)。
Task AppUpdateInfo任务=appUpdateManager.getAppUpdateInfo();
//InstallStateUpdatedListener是用于监视更新安装的侦听器。
final InstallStateUpdatedListener InstallStateUpdatedListener=new InstallStateUpdatedListener(){
@凌驾
公共无效onStateUpdate(InstallState InstallState){
//如果成功下载,则调用popupSnackBarForCompleteUpdate()以显示成功下载的最新更新的snackbar。
if(installState.installStatus()==installStatus.download){
//PopupNackBarforCompleteUpdate(协调布局、应用程序更新管理器);
Toast.makeText(TestingActivity.this,String.valueOf(appUpdateManager.completeUpdate()),Toast.LENGTH_SHORT.show();
}
}
};
//检查平台是否允许指定类型的更新。
AppUpdateInfo.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(AppUpdateInfo AppUpdateInfo){
如果(appUpdateInfo.updateAvailability()==updateAvailability.UPDATE\u可用&&
//因为它是灵活的更新,所以使用灵活的。
appUpdateInfo.IsUpdateType允许(AppUpdateType.IMMEDIATE)){
//Log.d(标记为“应用程序1”);
//请求更新。
试一试{
appUpdateManager.registerListener(installStateUpdatedListener);
//启动所需的更新流(这里是灵活更新)。
appUpdateManager.startUpdateFlowForResult(appUpdateInfo,AppUpdateType.IMMEDIATE,TestingActivity.this,100);
}catch(IntentSender.sendtintentexe){
e、 printStackTrace();
}
}否则{
if(appUpdateInfo.updateAvailability()==updateAvailability.DEVELOPER\u已触发\u更新\u正在进行){
PopupNackBarforCompleteUpdate(协调布局、应用程序更新管理器);
}
}
}
});
}
私有静态void PopupNackBarforCompleteUpdate(视图,最终AppUpdateManager AppUpdateManager){
Snackbar Snackbar=Snackbar.make(查看“刚刚下载了更新”,Snackbar.LENGTH\u不确定);
snackbar.setAction(“重新启动”,new View.OnClickListener(){
@凌驾
公共void onClick(视图){
appUpdateManager.completeUpdate();
}
});
snackbar.show();
}
}
当我在debug中构建这段代码时,我什么也没找到。应用程序已在play store中发布时,此处未显示更新弹出窗口

我想要什么


帮助在应用中使用应用内更新API,如果您知道,请解释应用内更新API的流程。

您可以在此处找到实现:


对于版本代码实验,您可以使用Play store内部测试功能

您可以在此处找到实现:


对于版本代码实验,您可以使用Play store内部测试功能

您可以检查参考,看看它是否有效。

您可以检查参考,看看它是否有效。

您的Play store应用程序和调试应用程序上有什么
版本代码?Play store中有0.0.3,而我的应用程序在0.0.2为什么要在中使用修改从链接的代码,任何具体的原因,因为我也使用的答案,它是顺利工作。另外,我要求的是
versionCode
而不是
versionName
对不起
versionName
我的版本代码分别是3和2。你的PlayStore应用程序和调试应用程序上有什么
versionCode
呢?0.0.3在Play Store中,而我的应用程序在0.0.2中。你为什么要在链接中修改代码,任何具体的原因,因为我也使用的答案,它是顺利工作。另外,我要求的是
versionCode
而不是
versionName
对不起
versionName
我的版本代码分别是3和2。兄弟,我想清楚地解释如何使用该代码,因为只有我无法实现的代码。是的,它已经在闪屏本身实现了代码。兄弟,我想清楚地解释一下如何使用那个代码,因为只有那个代码我无法实现。是的,它已经在闪屏本身实现了代码。