From 666a3bc7d6958f69910889996f25c7ef572c442e Mon Sep 17 00:00:00 2001
From: dxl <64101226@qq.com>
Date: Tue, 9 May 2023 14:13:43 +0800
Subject: [PATCH] Adapt to Android 12 or later.
---
apprts/build.gradle | 4 ++--
apprts/src/main/AndroidManifest.xml | 16 +++++++++----
.../activities/tools/LoginActivity.java | 23 +++++++++++++++----
build.gradle | 2 +-
gradle/wrapper/gradle-wrapper.properties | 2 +-
libcml/build.gradle | 4 ++--
libcom/build.gradle | 4 ++--
.../com/proxgrind/com/UsbSerialControl.java | 7 +++++-
libcrapto1/build.gradle | 4 ++--
libflasher/build.gradle | 4 ++--
libmfkey/build.gradle | 4 ++--
libnfc/build.gradle | 4 ++--
libpm3/build.gradle | 2 --
libtag/build.gradle | 4 ++--
.../mifare/StdMifareIntent.java | 16 +++++++------
libutils/build.gradle | 4 ++--
terminal-emulator/build.gradle | 4 ++--
terminal-view/build.gradle | 4 ++--
termux-app/build.gradle | 4 ++--
termux-app/src/main/AndroidManifest.xml | 4 +++-
.../com/termux/app/TermuxHelpActivity.java | 3 ++-
.../java/com/termux/app/TermuxService.java | 23 +++++++++++++++----
22 files changed, 96 insertions(+), 50 deletions(-)
diff --git a/apprts/build.gradle b/apprts/build.gradle
index 6e213613..8f5e616e 100644
--- a/apprts/build.gradle
+++ b/apprts/build.gradle
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
defaultConfig {
applicationId "com.rfidresearchgroup.rfidtools"
minSdkVersion 21
- targetSdkVersion 29
+ targetSdkVersion 33
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
versionCode 26
versionName "1.4.8 SDK21 && PM3 CWD"
diff --git a/apprts/src/main/AndroidManifest.xml b/apprts/src/main/AndroidManifest.xml
index afbffed5..d7d60bb7 100644
--- a/apprts/src/main/AndroidManifest.xml
+++ b/apprts/src/main/AndroidManifest.xml
@@ -2,8 +2,16 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.rfidresearchgroup.rfidtools">
-
-
+
+
+
+
+
+
+
+
@@ -22,7 +30,7 @@
android:usesCleartextTraffic="true"
tools:targetApi="q">
-
+
@@ -42,7 +50,7 @@
android:name="com.rfidresearchgroup.activities.connect.Proxmark3Rdv4RRGConnectActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout" />
-
+
diff --git a/apprts/src/main/java/com/rfidresearchgroup/activities/tools/LoginActivity.java b/apprts/src/main/java/com/rfidresearchgroup/activities/tools/LoginActivity.java
index dc1f783e..c1dd6b5a 100644
--- a/apprts/src/main/java/com/rfidresearchgroup/activities/tools/LoginActivity.java
+++ b/apprts/src/main/java/com/rfidresearchgroup/activities/tools/LoginActivity.java
@@ -3,6 +3,7 @@ package com.rfidresearchgroup.activities.tools;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -27,6 +28,10 @@ import com.rfidresearchgroup.common.implement.PermissionCallback;
import com.rfidresearchgroup.common.util.FragmentUtil;
import com.rfidresearchgroup.common.util.PermissionUtil;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+
/*
* 登陆界面,,用于登陆用户系统,初始化环境,对于用户的验证,都放在这里实现
*/
@@ -90,11 +95,21 @@ public class LoginActivity
}
});
- String[] permissionArray = new String[]{
+ ArrayList permissionArray = new ArrayList<>();
+ Collections.addAll(permissionArray,
+ // 以下是一定要添加的权限
Manifest.permission.WRITE_EXTERNAL_STORAGE,
- Manifest.permission.READ_EXTERNAL_STORAGE,
- };
- permissionUtil.setPermissions(permissionArray);
+ Manifest.permission.READ_EXTERNAL_STORAGE
+ );
+
+ // android 12或者以上,要单独申请蓝牙权限
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ permissionArray.add( Manifest.permission.BLUETOOTH_SCAN);
+ permissionArray.add( Manifest.permission.BLUETOOTH_CONNECT);
+ permissionArray.add( Manifest.permission.BLUETOOTH_ADVERTISE);
+ }
+
+ permissionUtil.setPermissions(permissionArray.toArray(new String[]{}));
permissionUtil.checks();
}
diff --git a/build.gradle b/build.gradle
index c3d29085..4fa0823c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.0.2'
+ classpath 'com.android.tools.build:gradle:7.1.2'
classpath('com.github.dcendents:android-maven-gradle-plugin:1.5')
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index f1920f4b..a7ceb09a 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
diff --git a/libcml/build.gradle b/libcml/build.gradle
index 2e095c60..1be2d382 100644
--- a/libcml/build.gradle
+++ b/libcml/build.gradle
@@ -1,11 +1,11 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 19
- targetSdkVersion 29
+ targetSdkVersion 33
}
buildTypes {
diff --git a/libcom/build.gradle b/libcom/build.gradle
index 55586e0f..44ae75e4 100644
--- a/libcom/build.gradle
+++ b/libcom/build.gradle
@@ -1,11 +1,11 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 19
- targetSdkVersion 29
+ targetSdkVersion 33
}
buildTypes {
diff --git a/libcom/src/main/java/com/proxgrind/com/UsbSerialControl.java b/libcom/src/main/java/com/proxgrind/com/UsbSerialControl.java
index da8cd089..746ec1ac 100644
--- a/libcom/src/main/java/com/proxgrind/com/UsbSerialControl.java
+++ b/libcom/src/main/java/com/proxgrind/com/UsbSerialControl.java
@@ -185,7 +185,12 @@ public class UsbSerialControl implements DriverInterface {
//如果对于这个设备没有权限!
if (!usbManager.hasPermission(usbDevice)) {
//发送广播申请权限
- PendingIntent intent = PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_PERMISSION), 0);
+ PendingIntent intent;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
+ intent = PendingIntent.getActivity(mContext, 0, new Intent(ACTION_PERMISSION), PendingIntent.FLAG_IMMUTABLE);
+ } else {
+ intent = PendingIntent.getActivity(mContext, 0, new Intent(ACTION_PERMISSION), PendingIntent.FLAG_ONE_SHOT);
+ }
//Log.d(LOG_TAG, "尝试获得USB权限!");
usbManager.requestPermission(usbDevice, intent);
//当没有权限的时候应当直接返回
diff --git a/libcrapto1/build.gradle b/libcrapto1/build.gradle
index f43ca463..e1634f12 100644
--- a/libcrapto1/build.gradle
+++ b/libcrapto1/build.gradle
@@ -1,11 +1,11 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 19
- targetSdkVersion 29
+ targetSdkVersion 33
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_static'
diff --git a/libflasher/build.gradle b/libflasher/build.gradle
index df3c90ee..b2822ad1 100644
--- a/libflasher/build.gradle
+++ b/libflasher/build.gradle
@@ -1,11 +1,11 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 19
- targetSdkVersion 29
+ targetSdkVersion 33
externalNativeBuild {
cmake {
diff --git a/libmfkey/build.gradle b/libmfkey/build.gradle
index 8af01050..88e665cc 100644
--- a/libmfkey/build.gradle
+++ b/libmfkey/build.gradle
@@ -1,11 +1,11 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 18
- targetSdkVersion 29
+ targetSdkVersion 33
externalNativeBuild {
cmake {
/*
diff --git a/libnfc/build.gradle b/libnfc/build.gradle
index 51e40af0..e2fb0a5b 100644
--- a/libnfc/build.gradle
+++ b/libnfc/build.gradle
@@ -1,11 +1,11 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 19
- targetSdkVersion 29
+ targetSdkVersion 33
externalNativeBuild {
cmake {
diff --git a/libpm3/build.gradle b/libpm3/build.gradle
index ec6e7f99..7487b9d7 100644
--- a/libpm3/build.gradle
+++ b/libpm3/build.gradle
@@ -6,8 +6,6 @@ android {
defaultConfig {
minSdk 21
targetSdk 29
- versionCode 1
- versionName "1.0"
}
buildTypes {
diff --git a/libtag/build.gradle b/libtag/build.gradle
index f0ab3a4a..4da23a59 100644
--- a/libtag/build.gradle
+++ b/libtag/build.gradle
@@ -1,11 +1,11 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 19
- targetSdkVersion 29
+ targetSdkVersion 33
consumerProguardFiles 'consumer-rules.pro'
}
diff --git a/libtag/src/main/java/com/rfidresearchgroup/mifare/StdMifareIntent.java b/libtag/src/main/java/com/rfidresearchgroup/mifare/StdMifareIntent.java
index c5f6af3a..4be100c2 100644
--- a/libtag/src/main/java/com/rfidresearchgroup/mifare/StdMifareIntent.java
+++ b/libtag/src/main/java/com/rfidresearchgroup/mifare/StdMifareIntent.java
@@ -32,13 +32,15 @@ public class StdMifareIntent {
public void enableForegroundDispatch(Activity targetAct) {
if (mAdapter == null) return;
//进行前台广播拦截!
- Intent intent = new Intent(targetAct,
- targetAct.getClass()).addFlags(
- Intent.FLAG_ACTIVITY_SINGLE_TOP);
- PendingIntent pendingIntent = PendingIntent.getActivity(
- targetAct, 0, intent, 0);
- mAdapter.enableForegroundDispatch(targetAct, pendingIntent, null, new String[][]{
- new String[]{MifareClassic.class.getName()}});
+ Intent intent = new Intent(targetAct, targetAct.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ PendingIntent pendingIntent;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
+ pendingIntent = PendingIntent.getActivity(targetAct, 0, intent, PendingIntent.FLAG_IMMUTABLE);
+ } else {
+ pendingIntent = PendingIntent.getActivity(targetAct, 0, intent, PendingIntent.FLAG_ONE_SHOT);
+ }
+
+ mAdapter.enableForegroundDispatch(targetAct, pendingIntent, null, new String[][]{new String[]{MifareClassic.class.getName()}});
}
/*
diff --git a/libutils/build.gradle b/libutils/build.gradle
index 807dab09..529c1d5d 100644
--- a/libutils/build.gradle
+++ b/libutils/build.gradle
@@ -1,11 +1,11 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 19
- targetSdkVersion 29
+ targetSdkVersion 33
}
buildTypes {
diff --git a/terminal-emulator/build.gradle b/terminal-emulator/build.gradle
index a4d47cd2..912e06dc 100644
--- a/terminal-emulator/build.gradle
+++ b/terminal-emulator/build.gradle
@@ -1,12 +1,12 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
// ndkVersion '21.3.6528147'
defaultConfig {
minSdkVersion 21
- targetSdkVersion 29
+ targetSdkVersion 33
externalNativeBuild {
ndkBuild {
diff --git a/terminal-view/build.gradle b/terminal-view/build.gradle
index 8e6706f1..ffb5568c 100644
--- a/terminal-view/build.gradle
+++ b/terminal-view/build.gradle
@@ -1,7 +1,7 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 29
+ compileSdkVersion 33
dependencies {
implementation "androidx.annotation:annotation:1.1.0"
@@ -10,7 +10,7 @@ android {
defaultConfig {
minSdkVersion 21
- targetSdkVersion 29
+ targetSdkVersion 33
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
diff --git a/termux-app/build.gradle b/termux-app/build.gradle
index 049fce7a..d7b43633 100644
--- a/termux-app/build.gradle
+++ b/termux-app/build.gradle
@@ -3,7 +3,7 @@ plugins {
}
android {
- compileSdkVersion 29
+ compileSdkVersion 33
// ndkVersion '21.3.6528147'
dependencies {
@@ -16,7 +16,7 @@ android {
defaultConfig {
// applicationId "com.termux"
minSdkVersion 21
- targetSdkVersion 29
+ targetSdkVersion 33
/*externalNativeBuild {
ndkBuild {
diff --git a/termux-app/src/main/AndroidManifest.xml b/termux-app/src/main/AndroidManifest.xml
index d4635af6..0b2fc669 100644
--- a/termux-app/src/main/AndroidManifest.xml
+++ b/termux-app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
android:label="@string/application_name"
android:noHistory="true"
android:resizeableActivity="true"
+ android:exported="true"
android:taskAffinity="com.termux.filereceiver">
@@ -104,7 +105,8 @@
+ android:targetActivity="com.termux.app.TermuxActivity"
+ android:exported="true">
diff --git a/termux-app/src/main/java/com/termux/app/TermuxHelpActivity.java b/termux-app/src/main/java/com/termux/app/TermuxHelpActivity.java
index 0aa8a97a..102fde40 100644
--- a/termux-app/src/main/java/com/termux/app/TermuxHelpActivity.java
+++ b/termux-app/src/main/java/com/termux/app/TermuxHelpActivity.java
@@ -32,7 +32,8 @@ public final class TermuxHelpActivity extends Activity {
mWebView = new WebView(this);
WebSettings settings = mWebView.getSettings();
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
- settings.setAppCacheEnabled(false);
+ // deprecate api
+ // settings.setAppCacheEnabled(false);
setContentView(progressLayout);
mWebView.clearCache(true);
diff --git a/termux-app/src/main/java/com/termux/app/TermuxService.java b/termux-app/src/main/java/com/termux/app/TermuxService.java
index 8fbed3e7..3dde39b0 100644
--- a/termux-app/src/main/java/com/termux/app/TermuxService.java
+++ b/termux-app/src/main/java/com/termux/app/TermuxService.java
@@ -224,8 +224,12 @@ public final class TermuxService extends Service implements SessionChangedCallba
// PendingIntent#getActivity(): "Note that the activity will be started outside of the context of an existing
// activity, so you must use the Intent.FLAG_ACTIVITY_NEW_TASK launch flag in the Intent":
notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notifyIntent, 0);
-
+ PendingIntent pendingIntent;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
+ pendingIntent = PendingIntent.getActivity(this, 0, notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ } else {
+ pendingIntent = PendingIntent.getActivity(this, 0, notifyIntent, PendingIntent.FLAG_ONE_SHOT);
+ }
int sessionCount = mTerminalSessions.size();
int taskCount = mBackgroundTasks.size();
String contentText = sessionCount + " session" + (sessionCount == 1 ? "" : "s");
@@ -259,7 +263,13 @@ public final class TermuxService extends Service implements SessionChangedCallba
Resources res = getResources();
Intent exitIntent = new Intent(this, TermuxService.class).setAction(ACTION_STOP_SERVICE);
- builder.addAction(android.R.drawable.ic_delete, res.getString(R.string.notification_action_exit), PendingIntent.getService(this, 0, exitIntent, 0));
+ PendingIntent pendingIntentService;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
+ pendingIntentService = PendingIntent.getActivity(this, 0, exitIntent, PendingIntent.FLAG_IMMUTABLE);
+ } else {
+ pendingIntentService = PendingIntent.getActivity(this, 0, exitIntent, PendingIntent.FLAG_ONE_SHOT);
+ }
+ builder.addAction(android.R.drawable.ic_delete, res.getString(R.string.notification_action_exit), pendingIntentService);
String newWakeAction = wakeLockHeld ? ACTION_UNLOCK_WAKE : ACTION_LOCK_WAKE;
Intent toggleWakeLockIntent = new Intent(this, TermuxService.class).setAction(newWakeAction);
@@ -267,7 +277,12 @@ public final class TermuxService extends Service implements SessionChangedCallba
R.string.notification_action_wake_unlock :
R.string.notification_action_wake_lock);
int actionIcon = wakeLockHeld ? android.R.drawable.ic_lock_idle_lock : android.R.drawable.ic_lock_lock;
- builder.addAction(actionIcon, actionTitle, PendingIntent.getService(this, 0, toggleWakeLockIntent, 0));
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
+ pendingIntentService = PendingIntent.getActivity(this, 0, toggleWakeLockIntent, PendingIntent.FLAG_IMMUTABLE);
+ } else {
+ pendingIntentService = PendingIntent.getActivity(this, 0, toggleWakeLockIntent, PendingIntent.FLAG_ONE_SHOT);
+ }
+ builder.addAction(actionIcon, actionTitle, pendingIntentService);
return builder.build();
}