com.farmerbb.notepad.fragment.dialog.AboutDialogFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.farmerbb.notepad.fragment.dialog.AboutDialogFragment.java

Source

/* Copyright 2014 Braden Farmer
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.farmerbb.notepad.fragment.dialog;

import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;

import com.farmerbb.notepad.BuildConfig;
import com.farmerbb.notepad.R;
import com.farmerbb.notepad.util.SignatureUtils;

public class AboutDialogFragment extends DialogFragment {

    TextView textView;

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        // Get the layout inflater
        final LayoutInflater inflater = getActivity().getLayoutInflater();

        // Inflate and set the layout for the dialog
        // Pass null as the parent view because its going in the dialog layout
        final View view = inflater.inflate(R.layout.fragment_dialogs, null);

        builder.setView(view).setTitle(R.string.dialog_about_title).setPositiveButton(R.string.action_close, null);

        SignatureUtils.ReleaseType releaseType = SignatureUtils.getReleaseType(getActivity());
        if (!releaseType.equals(SignatureUtils.ReleaseType.UNKNOWN)) {
            builder.setNegativeButton(R.string.check_for_updates,
                    (dialogInterface, i) -> checkForUpdates(releaseType));
        }

        textView = view.findViewById(R.id.dialogMessage);
        textView.setText(R.string.dialog_about_message);
        textView.setMovementMethod(LinkMovementMethod.getInstance());

        // Create the AlertDialog object and return it
        return builder.create();
    }

    private void checkForUpdates(SignatureUtils.ReleaseType releaseType) {
        String url = "";

        switch (releaseType) {
        case PLAY_STORE:
            url = isPlayStoreInstalled()
                    ? "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID
                    : "https://github.com/farmerbb/Notepad/releases";
            break;
        case AMAZON:
            url = "https://www.amazon.com/gp/mas/dl/android?p=" + BuildConfig.APPLICATION_ID;
            break;
        case F_DROID:
            url = "https://f-droid.org/repository/browse/?fdid=" + BuildConfig.APPLICATION_ID;
            break;
        }

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(url));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        try {
            startActivity(intent);
        } catch (ActivityNotFoundException e) {
            /* Gracefully fail */ }
    }

    private boolean isPlayStoreInstalled() {
        try {
            getActivity().getPackageManager().getPackageInfo("com.android.vending", 0);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
    }
}