Maps API v2 Legal Notices String too long

I am trying to add applications for the Google Maps v2 API to the Android application that can be obtained by calling: GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo()

So my code is as follows:

String LicenseInfo = GooglePlayServicesUtil
      .getOpenSourceSoftwareLicenseInfo(getApplicationContext());

AlertDialog.Builder LicenseDialog = new AlertDialog.Builder(MyActivity.this);
LicenseDialog.setTitle("Lagal Notices");
LicenseDialog.setMessage(LicenseInfo);
LicenseDialog.show();

But when I execute this code, the system takes about 10 seconds before the dialog box is shown (considering that my device is OnePlus One, it seems rather strange).

If I try to replace LicenseInfo with a simple (shorter) line, the dialog will open quite quickly. Therefore, I think the problem is related to the length of legal notice information received from Google’s boot applications.

How can I solve this problem?

+4
source share
6

, GitHub . , , , .

https://github.com/wf9a5m75/phonegap-googlemaps-plugin/blob/master/src/android/plugin/google/maps/AsyncLicenseInfo.java

private class AsyncLoadLicenseInfo extends AsyncTask<Void,Void,AlertDialog.Builder>
{

    @Override
    protected void onPreExecute()
    {
        progressDialog = new ProgressDialog(context);
        progressDialog.setIndeterminate(true);
        progressDialog.setMessage(context.getResources().getString(R.string.LegalNoticesLoading));
        progressDialog.setCancelable(false);
        progressDialog.show();

    }

    @Override
    protected AlertDialog.Builder doInBackground(Void... params)
    {
        String googleAttribution = GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo(context);
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder
                .setTitle(context.getResources().getString(R.string.AboutLegalNotices))
                .setCancelable(false)
                .setMessage(googleAttribution)
                .setPositiveButton(context.getResources().getString(R.string.Close),null);

        return builder;
    }

    @Override
    protected void onPostExecute(AlertDialog.Builder builder)
    {

        AlertDialog attributionDialog = builder.create();
        attributionDialog.setOnShowListener(new DialogInterface.OnShowListener()
        {
            @Override
            public void onShow(DialogInterface dialog)
            {
                progressDialog.dismiss();
                progressDialog = null;

            }
        });

        attributionDialog.show();
    }
}
+3

, WebView TextView - .

:

private void legalDialog(){

        String licenseInfo =  GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo(this);
        licenseInfo = licenseInfo.replace("\n", "<br/>");

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(R.string.legal_notice);

        WebView webView = new WebView(this);
        webView.loadData("<html><body>"+licenseInfo+"</body></html>", "text/html", "utf-8");
        WebSettings webSettings = webView.getSettings();
        webSettings.setDefaultFontSize(12);

        builder.setView(webView);
        builder.setPositiveButton(R.string.dialog_close, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });

        final AlertDialog createDialog = builder.create();
        createDialog.show();

    }

, GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo(this) null, legalDialog().

+3

Motorola G5 Android 6 , GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo() ( GoogleApiAvailability.getInstance().getOpenSourceSoftwareLicenseInfo(getActivity())), 600 000 . TextView, .

LongStringLoader . - .

+1

WebView TextView. Html, ,

String result = GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo(this);

+1

, . , , , dialog.show() , . ", ", . , " " (Ofcourse, , . , dialog.setOnShowListener / , )

legalNoticeTV.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            legalNoticeTV.setText(getResources().getString(R.string.please_wait));
            legalNoticeTV.setEnabled(false);

            String result =  GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo(this);
            TextView tv = new TextView(this);
            tv.setBackgroundColor(getResources().getColor(R.color.dialogbackgroundcolorgrey));
            tv.setText(result);
            tv.setPadding(8, 8, 8, 8);
            ScrollView sc = new ScrollView(this);
            sc.addView(tv);

            legalNotice = new Dialog(this, R.style.DialogNoTitle);

            legalNotice .requestWindowFeature(Window.FEATURE_NO_TITLE);

            legalNotice.setContentView(sc);
            legalNotice.show();
            legalNotice.setOnDismissListener(new OnDismissListener() {

                @Override
                public void onDismiss(DialogInterface dialog) {
                    legalNoticeTV.setText(getResources().getString(R.string.legal_notices));
                    legalNoticeTV.setEnabled(true);
                }
            });
        }
    });
0

WebView, lenooh , TextUtils.htmlEncode(licenseInfo) HTML.

String licenseInfo =  GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo(this);
licenseInfo = TextUtils.htmlEncode(licenseInfo);
0
source

All Articles