Fix PackageManager deprecations

Closes #225
This commit is contained in:
emanuele-f 2022-08-17 00:02:07 +02:00
parent ae7a06cfa3
commit e9fed41efb
8 changed files with 44 additions and 32 deletions

View File

@ -62,11 +62,7 @@ public class AppsLoader implements LoaderManager.LoaderCallbacks<ArrayList<AppDe
ArraySet<Integer> uids = new ArraySet<>();
Log.d(TAG, "Loading APPs...");
List<PackageInfo> packs;
if (android.os.Build.VERSION.SDK_INT >= 33)
packs = pm.getInstalledPackages(PackageManager.PackageInfoFlags.of(0));
else
packs = pm.getInstalledPackages(0);
List<PackageInfo> packs = Utils.getInstalledPackages(pm, 0);
String app_package = mContext.getApplicationContext().getPackageName();

View File

@ -21,11 +21,9 @@ package com.emanuelef.remote_capture;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.Log;
import android.util.SparseArray;
@ -98,7 +96,7 @@ public class AppsResolver {
PackageInfo pinfo;
try {
pinfo = pm.getPackageInfo(packageName, pm_flags);
pinfo = Utils.getPackageInfo(pm, packageName, pm_flags);
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "could not retrieve package: " + packageName);
return null;
@ -183,12 +181,7 @@ public class AppsResolver {
}
} else {
try {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return mPm.getPackageUid(package_name, 0);
} else {
ApplicationInfo info = mPm.getApplicationInfo(package_name, 0);
return info.uid;
}
return Utils.getPackageUid(mPm, package_name, 0);
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "Could not retrieve package " + package_name);
//e.printStackTrace();

View File

@ -365,7 +365,7 @@ public class CaptureService extends VpnService implements Runnable {
if ((mSettings.app_filter != null) && (!mSettings.app_filter.isEmpty())) {
try {
app_filter_uid = getPackageManager().getApplicationInfo(mSettings.app_filter, 0).uid;
app_filter_uid = Utils.getPackageUid(getPackageManager(), mSettings.app_filter, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
app_filter_uid = -1;

View File

@ -24,7 +24,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
@ -103,7 +102,7 @@ public class MitmAddon {
public static long getInstalledVersion(Context ctx) {
try {
PackageInfo pInfo = ctx.getPackageManager().getPackageInfo(MitmAPI.PACKAGE_NAME, 0);
PackageInfo pInfo = Utils.getPackageInfo(ctx.getPackageManager(), MitmAPI.PACKAGE_NAME, 0);
return PackageInfoCompat.getLongVersionCode(pInfo);
} catch (PackageManager.NameNotFoundException e) {
return -1;
@ -111,14 +110,8 @@ public class MitmAddon {
}
public static int getUid(Context ctx) {
PackageManager pm = ctx.getPackageManager();
try {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return pm.getPackageUid(MitmAPI.PACKAGE_NAME, 0);
} else {
return pm.getApplicationInfo(MitmAPI.PACKAGE_NAME, 0).uid;
}
return Utils.getPackageUid(ctx.getPackageManager(), MitmAPI.PACKAGE_NAME, 0);
} catch (PackageManager.NameNotFoundException e) {
return -1;
}

View File

@ -707,7 +707,7 @@ public class Utils {
String appver;
try {
PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
PackageInfo pInfo = Utils.getPackageInfo(context.getPackageManager(), context.getPackageName(), 0);
String version = pInfo.versionName;
boolean isRelease = version.contains(".");
@ -1082,11 +1082,11 @@ public class Utils {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
// NOTE: PCAPdroid does not use multiple signatures
PackageInfo pInfo = ctx.getPackageManager().getPackageInfo(package_name, PackageManager.GET_SIGNING_CERTIFICATES);
PackageInfo pInfo = Utils.getPackageInfo(ctx.getPackageManager(), package_name, PackageManager.GET_SIGNING_CERTIFICATES);
signatures = (pInfo.signingInfo == null) ? null : pInfo.signingInfo.getSigningCertificateHistory();
} else {
@SuppressLint("PackageManagerGetSignatures")
PackageInfo pInfo = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), PackageManager.GET_SIGNATURES);
PackageInfo pInfo = Utils.getPackageInfo(ctx.getPackageManager(), package_name, PackageManager.GET_SIGNATURES);
signatures = pInfo.signatures;
}
@ -1402,4 +1402,31 @@ public class Utils {
}
}
}
@SuppressWarnings({"deprecation"})
public static PackageInfo getPackageInfo(PackageManager pm, String package_name, int flags) throws PackageManager.NameNotFoundException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
return pm.getPackageInfo(package_name, PackageManager.PackageInfoFlags.of(flags));
else
return pm.getPackageInfo(package_name, flags);
}
@SuppressWarnings({"deprecation"})
public static int getPackageUid(PackageManager pm, String package_name, int flags) throws PackageManager.NameNotFoundException {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
return pm.getPackageUid(package_name, PackageManager.PackageInfoFlags.of(flags));
else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
return pm.getPackageUid(package_name, 0);
else
return pm.getApplicationInfo(package_name, 0).uid;
}
@SuppressLint({"QueryPermissionsNeeded"})
@SuppressWarnings({"deprecation"})
public static List<PackageInfo> getInstalledPackages(PackageManager pm, int flags) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
return pm.getInstalledPackages(PackageManager.PackageInfoFlags.of(flags));
else
return pm.getInstalledPackages(flags);
}
}

View File

@ -41,6 +41,7 @@ import androidx.annotation.RequiresApi;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.pm.PackageInfoCompat;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
@ -341,7 +342,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
}
PackageInfo pInfo = peer.getPackageInfo();
if((pInfo == null) || (pInfo.versionCode < 56)) {
if((pInfo == null) || (PackageInfoCompat.getLongVersionCode(pInfo) < 56)) {
Log.d(TAG, "Unsupported peer app version found");
return;
}
@ -353,7 +354,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
return;
}
Log.d(TAG, "Valid peer app found (" + pInfo.versionName + " - " + pInfo.versionCode + ")");
Log.d(TAG, "Valid peer app found (" + pInfo.versionName + " - " + PackageInfoCompat.getLongVersionCode(pInfo) + ")");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName(peerAppPackage, "com.emanuelef.remote_capture.activities.CaptureCtrl");
intent.putExtra("action", "get_peer_info");
@ -577,7 +578,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
Intent intent;
try {
getPackageManager().getPackageInfo("org.telegram.messenger", 0);
Utils.getPackageInfo(getPackageManager(), "org.telegram.messenger", 0);
// Open directly into the telegram app
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tg://resolve?domain=" + TELEGRAM_GROUP_NAME));

View File

@ -195,6 +195,7 @@ public class SettingsActivity extends BaseActivity implements PreferenceFragment
}
}
@SuppressWarnings("deprecation")
private boolean validateIp(String value) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
return (InetAddresses.isNumericAddress(value));

View File

@ -186,9 +186,10 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
mEmptyText = view.findViewById(R.id.no_connections);
mActiveFilter = view.findViewById(R.id.active_filter);
mActiveFilter.setOnCheckedChangeListener((group, checkedId) -> {
mActiveFilter.setOnCheckedStateChangeListener((group, checkedIds) -> {
if(mAdapter != null) {
mAdapter.mFilter.clear(checkedId);
for(int checkedId: checkedIds)
mAdapter.mFilter.clear(checkedId);
refreshFilteredConnections();
}
});