在Android中处理LinkedIn应用下载对话框的取消

时间:2016-02-18 10:31:35

标签: android linkedin

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

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

中的一个名为 AppStore 的LinkedIn SDK类显示的。

请建议。

2 个答案:

答案 0 :(得分:1)

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

@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();

}

答案 1 :(得分:0)

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