【问题标题】:Handling cancellation of LinkedIn app download dialog in android在 android 中处理取消 LinkedIn 应用程序下载对话框
【发布时间】:2017-06-08 14:38:18
【问题描述】:

我在我的 android 应用中使用 LinkedIn SDK,这需要在设备中安装 LinkedIn 应用。当设备中未安装 LinkedIn 应用程序时,它会显示一个对话框,要求下载该应用程序。

到目前为止,我还没有找到一种方法来从应用程序中检测对话框是否已被取消。深入挖掘我发现该对话框由 com.linkedin.platform.internals

中名为 AppStore 的 LinkedIn SDK 类显示

请指教。

【问题讨论】:

    标签: android linkedin


    【解决方案1】:

    没有官方方法可以确定对话是否被取消,但我们可以使用我们自己的自定义实现来检查应用程序是否已安装,然后继续登录过程,我正在使用以下代码执行此操作

    @Override
    public void onResume() {
        super.onResume();
    
        //check if the linkdin is installed or not
        if (linkedInInstalled()) {//if the linkedin is installed then proceed with login
            login_linkedin();
        } else {//else do not login ask user to download the app
            showLinkdingInstallPopup();
        }
    }
    
    private boolean linkedInInstalled() {
        PackageManager pm = getPackageManager();
        try {
            pm.getPackageInfo("com.linkedin.android", PackageManager.GET_ACTIVITIES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
        }
    
        return false;
    }
    

    如果已安装 LinkedIn 应用程序,则继续正常登录过程,如果没有,则向用户显示一条消息以安装链接

    private void showLinkdingInstallPopup() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
    
        builder.setMessage("Linkedin is not installed on you device please install it to proceed with linkedin synch");
        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
    
                dialogInterface.dismiss();
    
                try {
                    Intent viewIntent =
                            new Intent("android.intent.action.VIEW",
                                    Uri.parse("https://play.google.com/store/apps/details?id=com.linkedin.android&hl=en"));
                    startActivity(viewIntent);
                } catch (Exception e) {
                    Toast.makeText(getApplicationContext(), "Unable to connect try after some time...",
                            Toast.LENGTH_LONG).show();
                    e.printStackTrace();
                }
    
            }
        });
    
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                //handle the dialog cancelled logic
                dialogInterface.dismiss();
                finish();
            }
        });
    
        AlertDialog dialog = builder.create();
        dialog.show();
    
    }
    

    【讨论】:

      【解决方案2】:

      实际上没有办法做到这一点。显示的对话框来自 LinkedIn API,调用者无法检测对话框操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-08
        • 1970-01-01
        相关资源
        最近更新 更多