Java tutorial
/* Swisscom Safe Connect Copyright (C) 2014 Swisscom This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.swisscom.safeconnect.fragment; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.RelativeLayout; import com.swisscom.safeconnect.BuildConfig; import com.swisscom.safeconnect.R; import com.swisscom.safeconnect.utils.Config; import com.swisscom.safeconnect.view.PipeButton; import java.util.Locale; public class WhatsnewDialogFragment extends DialogFragment { private WebView webView; private ProgressBar prBar; private Button btnOk; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (getDialog() != null) { getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); } View v = inflater.inflate(R.layout.whatsnew, container, false); webView = (WebView) v.findViewById(R.id.view_whatsnew); prBar = (ProgressBar) v.findViewById(R.id.pb_loading); btnOk = (Button) v.findViewById(R.id.btn_ok); webView.setVerticalScrollBarEnabled(true); return v; } @Override public void onStart() { super.onStart(); if (getDialog() == null) return; getDialog().getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); getDialog().setCanceledOnTouchOutside(false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // get version numbers String versionStr = ""; try { PackageInfo packageInfo = getActivity().getPackageManager() .getPackageInfo(getActivity().getPackageName(), 0); versionStr = packageInfo.versionName; } catch (PackageManager.NameNotFoundException e) { if (BuildConfig.DEBUG) Log.e(Config.TAG, "error getting pkg info", e); } String[] versionArr = versionStr.split("\\."); int major = 0; int minor = 0; int revision = 0; if (versionArr.length >= 1) { major = parseInt(versionArr[0]); } if (versionArr.length >= 2) { minor = parseInt(versionArr[1]); } if (versionArr.length >= 3) { revision = parseInt(versionArr[2]); } webView.loadUrl(String.format("https://%s/whatsnew/and/?m=%d&i=%d&r=%d&l=%s", Config.PLUMBER_ADDR, major, minor, revision, Locale.getDefault().getLanguage())); prBar.setVisibility(View.VISIBLE); btnOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { closeDlgOrActivity(); } }); webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { if (getDialog() != null) { dismiss(); } } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); prBar.setVisibility(View.GONE); } }); } private void closeDlgOrActivity() { if (getDialog() != null) { dismiss(); return; } if (getActivity() != null) { getActivity().finish(); } } private int parseInt(String str) { int res = 0; try { res = Integer.parseInt(str); } catch (NumberFormatException e) { if (BuildConfig.DEBUG) Log.e(Config.TAG, "version is not an integer: " + str, e); res = 0; } return res; } }