package com.hdl.hdllinphonesdk.dialog; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.provider.Settings; import android.util.Log; import android.view.Display; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.TextView; import com.hdl.hdllinphonesdk.R; public class LinphoneCommonDialog { private Dialog commonPd; private volatile static LinphoneCommonDialog mInstance; public LinphoneCommonDialog() { } public static LinphoneCommonDialog getInstance() { if (mInstance == null) { synchronized (LinphoneCommonDialog.class) { if (mInstance == null) { mInstance = new LinphoneCommonDialog(); } } } return mInstance; } public void showDialog(Context context, String tip, String okButton, OnOKClickListener listener) { if (commonPd != null) { try { commonPd.show(); } catch (Exception e) { } } else { Dialog dialog = new Dialog(context, R.style.common_dialog); View view = LayoutInflater.from(context).inflate(R.layout.linphone_dialog_content_and_twobutton, null); dialog.setContentView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); TextView tvTitle = view.findViewById(R.id.tv_content_tip); tvTitle.setText(tip); TextView tvCancel = view.findViewById(R.id.dialog_cancel_btn); TextView tvOk = view.findViewById(R.id.dialog_ok_btn); tvOk.setText(okButton); tvCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dismiss(); } }); tvOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dismiss(); listener.onOKClick(); } }); WindowManager windowManager = dialog.getWindow().getWindowManager(); Display display = windowManager.getDefaultDisplay(); WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); lp.width = (int) (display.getWidth() * 0.8); //设置宽度 dialog.getWindow().setAttributes(lp); commonPd = dialog; commonPd.show(); } } public void dismiss() { try { if (commonPd != null) { commonPd.dismiss(); commonPd = null; } } catch (Exception e) { e.printStackTrace(); } } public interface OnOKClickListener { void onOKClick(); } public void showSettingPermissionDialog(Context context, String permission) { Log.d("panlili", "LinphoneCommonDialog.java:showSettingPermissionDialog-----> "); showDialog(context, permission, context.getString(R.string.linphone_text_open_settings), new LinphoneCommonDialog.OnOKClickListener() { @Override public void onOKClick() { Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", context.getPackageName(), null); intent.setData(uri); context.startActivity(intent); } }); } }