Skip to content

Commit

Permalink
Merge pull request #61 from cloud-emoticon/sdk-33
Browse files Browse the repository at this point in the history
Update Android SDK level to 33 and various related fixes and improvements
  • Loading branch information
KTachibanaM authored Oct 20, 2022
2 parents 7e51aab + 325aebc commit c31c293
Show file tree
Hide file tree
Showing 28 changed files with 611 additions and 527 deletions.
19 changes: 11 additions & 8 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 28
compileSdkVersion 33

defaultConfig {
minSdkVersion 14
targetSdkVersion 28
versionCode 32
versionName '1.3.1'
minSdkVersion 19
targetSdkVersion 33
versionCode 33
versionName '1.4'
}

// conditionally load keystore.properties and configure release signing config
Expand Down Expand Up @@ -39,6 +39,10 @@ android {
zipAlignEnabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
Expand All @@ -56,7 +60,7 @@ dependencies {
implementation 'org.greenrobot:eventbus:3.0.0'
implementation 'com.jakewharton:butterknife:7.0.1'
annotationProcessor 'com.jakewharton:butterknife:7.0.1'
implementation 'com.android.support:design:28.1.1'
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.mobeta.android.dslv:library:0.9.0'
// Database
implementation 'com.github.satyan:sugar:b16e65326a'
Expand All @@ -73,8 +77,7 @@ dependencies {
annotationProcessor 'com.hannesdorfmann.fragmentargs:processor:4.0.0-RC1'
implementation "org.parceler:parceler-api:1.1.12"
annotationProcessor "org.parceler:parceler:1.1.12"
implementation "org.permissionsdispatcher:permissionsdispatcher:4.7.0"
annotationProcessor "org.permissionsdispatcher:permissionsdispatcher-processor:4.7.0"
implementation 'pub.devrel:easypermissions:3.0.0'
// Debug
implementation 'com.facebook.stetho:stetho:1.3.1'
}
22 changes: 9 additions & 13 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,16 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.ktachibana.cloudemoji">

<!-- hack from https://github.com/Gericop/Android-Support-Preference-V7-Fix-->
<!-- hack from https://github.com/Gericop/Android-Support-Preference-V7-Fix -->
<uses-sdk xmlns:tools="http://schemas.android.com/tools"
tools:overrideLibrary="android.support.v14.preference" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
<uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
<!--<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>-->

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

<application
android:name=".BaseApplication"
Expand All @@ -35,7 +32,8 @@
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop">
android:launchMode="singleTop"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand All @@ -46,7 +44,8 @@
<activity-alias
android:name=".activities.AssistActivity"
android:enabled="false"
android:targetActivity=".activities.MainActivity">
android:targetActivity=".activities.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.ASSIST" />

Expand All @@ -72,10 +71,6 @@
android:name="android.support.PARENT_ACTIVITY"
android:value="org.ktachibana.cloudemoji.activities.MainActivity" />
</activity>
<activity
android:name=".activities.BootUpDummyActivity"
android:noHistory="true"
android:theme="@android:style/Theme.NoDisplay" />

<receiver
android:name=".receivers.BootUpReceiver"
Expand Down Expand Up @@ -107,7 +102,8 @@

<service android:name=".ime.MyInputMethodService"
android:label="@string/ime_label"
android:permission="android.permission.BIND_INPUT_METHOD">
android:permission="android.permission.BIND_INPUT_METHOD"
android:exported="true">
<intent-filter>
<action android:name="android.view.InputMethod" />
</intent-filter>
Expand Down
18 changes: 6 additions & 12 deletions app/src/main/java/org/ktachibana/cloudemoji/Constants.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
package org.ktachibana.cloudemoji;

import android.os.Environment;
import androidx.annotation.IntDef;

import java.io.File;

public interface Constants {
// Notification
int QUICK_TRIGGER_NOTIFICATION_ID = 0;
String QUICK_TRIGGER_NOTIFICATION_DEFAULT_VISIBILITY = "both";
String QUICK_TRIGGER_NOTIFICATION_CHANNEL_ID = "quick_trigger";

// Preferences
String PREF_CLOSE_AFTER_COPY = "pref_close_after_copy";
String PREF_NOTIFICATION_VISIBILITY = "pref_notification_visibility";
String PREF_NOTIFICATION_LEGACY_VISIBILITY = "pref_notification_legacy_visibility";
String QUICK_TRIGGER_NOTIFICATION_LEGACY_VISIBILITY_BOTH = "both";
String QUICK_TRIGGER_NOTIFICATION_LEGACY_VISIBILITY_NO = "no";
String QUICK_TRIGGER_NOTIFICATION_LEGACY_VISIBILITY_PANEL = "panel";
String PREF_SHOW_AFTER_BOOT_UP = "pref_show_after_boot_up";
String PREF_VERSION = "pref_version";
String PREF_GIT_HUB_RELEASE = "pref_git_hub_release";
Expand All @@ -24,8 +23,9 @@ public interface Constants {
String PREF_RESTORE_FAV = "pref_restore_fav";
String PREF_IMPORT_PERSONAL_DICT = "pref_import_into_personal_dict";
String PREF_REVOKE_PERSONAL_DICT = "pref_revoke_from_personal_dict";
String PREF_BEHAVIORS = "pref_behaviors";
String PREF_NOW_ON_TAP = "pref_now_on_tap";
String PREF_PERSONAL_DICTIONARY = "pref_ime";
String PREF_SHOW_NOTIFICATION = "pref_show_notification";

// Repository
int FORMAT_TYPE_XML = 0;
Expand All @@ -48,12 +48,6 @@ public interface Constants {
int PREFERENCE_REQUEST_CODE = 1;
int REPOSITORY_STORE_REQUEST_CODE = 2;

// File
String FAVORITES_BACKUP_FILE_PATH
= Environment.getExternalStorageDirectory().getPath() + File.separator + "ce.json";
String EXPORT_FILE_PATH
= Environment.getExternalStorageDirectory().getPath() + File.separator + "%s";

// Hacking
String PACKAGE_NAME_ANDROID_SETTINGS = "com.android.settings";
String CLASS_NAME_MANAGE_ASSIST_ACTIVITY = "com.android.settings.Settings$ManageAssistActivity";
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.ktachibana.cloudemoji.activities;

import android.Manifest;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
Expand All @@ -9,11 +10,14 @@
import android.database.sqlite.SQLiteException;
import android.net.Uri;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;

import org.apache.commons.io.IOUtils;
Expand All @@ -34,6 +38,7 @@
import org.ktachibana.cloudemoji.net.VersionCodeCheckerClient;
import org.ktachibana.cloudemoji.parsing.SourceParsingException;
import org.ktachibana.cloudemoji.parsing.SourceReader;
import org.ktachibana.cloudemoji.utils.CapabilityUtils;
import org.ktachibana.cloudemoji.utils.NotificationUtils;
import org.parceler.Parcels;

Expand All @@ -47,12 +52,15 @@
import java.util.List;

import butterknife.ButterKnife;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;

public class MainActivity extends BaseActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
public class MainActivity extends BaseActivity {
public static final String SOURCE_CACHE_TAG = "sourceCache";
private static final String CURRENT_ITEM_TAG = "currentItem";
private LinkedHashMap<Long, Source> sourceCache;
private int currentItem;
private static final int RC_POST_NOTIFICATIONS = 123;

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand Down Expand Up @@ -93,7 +101,7 @@ private void render() {
* Put every source into source cache
*/
private LinkedHashMap<Long, Source> initializeSourceCache() {
LinkedHashMap<Long, Source> sourceCache = new LinkedHashMap<Long, Source>();
LinkedHashMap<Long, Source> sourceCache = new LinkedHashMap<>();

List<Repository> allRepositories = Repository.listAll(Repository.class);
for (Repository repository : allRepositories) {
Expand All @@ -114,27 +122,18 @@ private LinkedHashMap<Long, Source> initializeSourceCache() {
return sourceCache;
}

@AfterPermissionGranted(RC_POST_NOTIFICATIONS)
private void setupNotification() {
NotificationUtils.setupNotificationWithPref(this, mPreferences.getString(Constants.PREF_NOTIFICATION_VISIBILITY, Constants.QUICK_TRIGGER_NOTIFICATION_DEFAULT_VISIBILITY));
}

@Override
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
if (Constants.PREF_NOTIFICATION_VISIBILITY.equals(key)) {
setupNotification();
if (CapabilityUtils.doNotNeedRuntimeNotificationPermission()) {
NotificationUtils.setupNotification(this, null);
return;
}
String[] perms = {Manifest.permission.POST_NOTIFICATIONS};
if (EasyPermissions.hasPermissions(this, perms)) {
NotificationUtils.setupNotification(this, null);
} else {
EasyPermissions.requestPermissions(this, getString(R.string.notification_rationale), RC_POST_NOTIFICATIONS, perms);
}
}

@Override
protected void onResumeFragments() {
super.onResumeFragments();
mPreferences.unregisterOnSharedPreferenceChangeListener(this);
}

@Override
protected void onPause() {
super.onPause();
mPreferences.registerOnSharedPreferenceChangeListener(this);
}

@Override
Expand Down Expand Up @@ -231,12 +230,12 @@ private void checkVersionCode(boolean success, int latestVersionCode) {
} else {
// New version available, show dialog
new MaterialDialog.Builder(MainActivity.this)
.title(getString(R.string.new_version_available) + String.format(" (%d)", latestVersionCode))
.title(String.format(getString(R.string.new_version_available), latestVersionCode))
.positiveText(R.string.go_to_play_store)
.negativeText(android.R.string.cancel)
.callback(new MaterialDialog.ButtonCallback() {
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
Intent intent = new Intent();
intent.setData(Uri.parse(Constants.PLAY_STORE_URL));
startActivity(intent);
Expand Down Expand Up @@ -276,6 +275,7 @@ else if (requestCode == Constants.PREFERENCE_REQUEST_CODE) {

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable(SOURCE_CACHE_TAG, Parcels.wrap(sourceCache));
outState.putInt(CURRENT_ITEM_TAG, currentItem);
}
Expand All @@ -295,7 +295,6 @@ private void firstTimeCheck() {
}
}

@SuppressWarnings("unchecked")
private void setupDefaultRepoIfNecessary() {
if (Repository.listAll(Repository.class).size() != 0) {
// If there are already repositories, ignore
Expand Down Expand Up @@ -370,4 +369,12 @@ private void upgradeFavoriteDatabaseIfExists() {
e.printStackTrace();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

// Forward results to EasyPermissions
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
}
Loading

0 comments on commit c31c293

Please sign in to comment.