在初始化主活动之前等待连接成功

时间:2014-12-11 22:27:35

标签: android android-asynctask wait

我正在开发一个使用特定通信协议的应用。该协议与可以远程启用和禁用的电插头通信。为此,应用程序必须检查插头是否连接到用户的Wi-Fi网络。如果不是,我会在DialogFragment中询问网络密码并将其发送到插头,以便将它们与网络配对。

我的问题如下:如果连接失败,用户不应该访问应用程序的其余部分。我不知道如何阻止这种访问。

我在AsyncTask中启动了连接测试。在此doInBackground方法中,如果自动连接失败,则会出现一个对话框,询问当前的Wi-Fi密码:

protected Void doInBackground(Void... params)
{
    if (!m_smartConfig.tryAutoConnectionToWiFiNetwork(false))
        showPasswordDialog();

    return null;
}

提交后,应用会再次尝试连接。如果密码正确,一切都很好,应用程序可以显示其余内容。如果不是,我希望它不显示任何内容并继续显示DialogFragment弹出窗口。我怎么能这样做?

编辑:这是我的自定义DialogFragment

public class NoticeDialogFragment extends DialogFragment

{     NoticeDialogListener mListener;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    // Verify that the host activity implements the callback interface
    try {
        // Instantiate the NoticeDialogListener so we can send events to the host
        mListener = (NoticeDialogListener) activity;
    } catch (ClassCastException e) {
        // The activity doesn't implement the interface, throw exception
        throw new ClassCastException(activity.toString()
                + " must implement NoticeDialogListener");
    }
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final AlertDialog.Builder dialogBuilder;

    LayoutInflater inflater = LayoutInflater.from(getActivity());
    final View v = inflater.inflate(R.layout.password_dialog, null);
    dialogBuilder = new AlertDialog.Builder(getActivity());
    dialogBuilder.setMessage(R.string.password_hint)
            .setView(v)
            .setPositiveButton(R.string.submit, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // Send the positive button event back to the host activity
                    EditText valueView = (EditText) v.findViewById(R.id.password);
                    if (valueView != null) {
                        try {
                            String password = valueView.getText().toString();
                            mListener.onDialogPositiveClick(NoticeDialogFragment.this, password);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            });

    return (dialogBuilder.create());
}

public interface NoticeDialogListener {
    public void onDialogPositiveClick(DialogFragment dialog, String password) throws Exception;
}

}

编辑2:为我的问题添加一些细节,问题是我无法立即知道密码是否正确。我必须尝试连接插头并等待他们的响应(成功或失败)。只有他们的回答才能选择正确的行为。

0 个答案:

没有答案