Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee855c28 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add Notification Permission for T"

parents aa4f78c5 75f77d66
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
     package="com.android.inputmethod.tools.edittextvariations"
     android:versionName="0.67"
     android:versionCode="67">
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <supports-screens android:resizeable="true"/>
    <uses-sdk android:targetSdkVersion="27"
         android:minSdkVersion="11"/>
+40 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.inputmethod.tools.edittextvariations;

import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
@@ -24,6 +25,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Build;
import android.os.Bundle;
@@ -45,7 +47,9 @@ import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

@@ -64,6 +68,7 @@ public final class EditTextVariations extends Activity implements TextView.OnEdi
    private static final String PREF_THEME = "theme";
    private static final String PREF_NAVIGATE = "navigate";
    private static final String PREF_SOFTINPUT = "softinput";
    private static final int NOTIFICATION_PERMISSION_REQUEST_CODE = 0;

    private SharedPreferences prefs;
    private View[] fields;
@@ -199,11 +204,35 @@ public final class EditTextVariations extends Activity implements TextView.OnEdi
            saveSoftInputMode(itemId == MENU_SOFTINPUT_VISIBLE);
            restartActivity();
        } else if (itemId == MENU_DIRECT_REPLY) {
            final boolean needPermissionCheck = isNeedNotificationPermission()
                    && checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) !=
                            PackageManager.PERMISSION_GRANTED;
            if (needPermissionCheck) {
                requestPermissions(new String[] { Manifest.permission.POST_NOTIFICATIONS },
                        NOTIFICATION_PERMISSION_REQUEST_CODE);
            } else {
                NotificationUtils.sendDirectReplyNotification(this);
            }
        }
        return true;
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions,
            int[] grantResults) {
        if (requestCode == NOTIFICATION_PERMISSION_REQUEST_CODE) {
                if (grantResults.length == 1 &&
                        grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // Permission is granted. Continue to send the notification.
                    NotificationUtils.sendDirectReplyNotification(this);
                }  else {
                    Log.d(TAG, "POST_NOTIFICATIONS Permissions denied.");
                    Toast.makeText(this, "Required permission has denied",
                            Toast.LENGTH_LONG).show();
                }
        }
    }

    @Override
    public void onClick(final DialogInterface dialog, final int which) {
        saveTheme(ThemeItem.THEME_LIST.get(which));
@@ -476,4 +505,14 @@ public final class EditTextVariations extends Activity implements TextView.OnEdi
        }
        return text;
    }

    private static boolean isNeedNotificationPermission() {
        for(Field field : Manifest.permission.class.getFields()) {
            if (field.getName().equals("POST_NOTIFICATIONS")) {
                Log.d(TAG, "Need notification permission.");
                return true;
            }
        }
        return false;
    }
}