mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-11 18:29:05 +01:00
Merge branch 'target-34' into 'master'
Target SDK 34 Closes #2464 See merge request briar/briar!1832
This commit is contained in:
@@ -3,8 +3,8 @@ apply plugin: 'witness'
|
|||||||
apply from: 'witness.gradle'
|
apply from: 'witness.gradle'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 33
|
compileSdkVersion 34
|
||||||
buildToolsVersion '33.0.0'
|
buildToolsVersion '34.0.0'
|
||||||
|
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
doNotStrip '**/*.so'
|
doNotStrip '**/*.so'
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import static android.os.PowerManager.ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED;
|
|||||||
import static android.os.PowerManager.ACTION_POWER_SAVE_MODE_CHANGED;
|
import static android.os.PowerManager.ACTION_POWER_SAVE_MODE_CHANGED;
|
||||||
import static java.util.logging.Level.INFO;
|
import static java.util.logging.Level.INFO;
|
||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
|
import static org.briarproject.bramble.util.AndroidUtils.registerReceiver;
|
||||||
|
|
||||||
class AndroidBatteryManager implements BatteryManager, Service {
|
class AndroidBatteryManager implements BatteryManager, Service {
|
||||||
|
|
||||||
@@ -52,7 +53,7 @@ class AndroidBatteryManager implements BatteryManager, Service {
|
|||||||
public boolean isCharging() {
|
public boolean isCharging() {
|
||||||
// Get the sticky intent for ACTION_BATTERY_CHANGED
|
// Get the sticky intent for ACTION_BATTERY_CHANGED
|
||||||
IntentFilter filter = new IntentFilter(ACTION_BATTERY_CHANGED);
|
IntentFilter filter = new IntentFilter(ACTION_BATTERY_CHANGED);
|
||||||
Intent i = appContext.registerReceiver(null, filter);
|
Intent i = registerReceiver(appContext, null, filter);
|
||||||
if (i == null) return false;
|
if (i == null) return false;
|
||||||
int status = i.getIntExtra(EXTRA_PLUGGED, 0);
|
int status = i.getIntExtra(EXTRA_PLUGGED, 0);
|
||||||
return status != 0;
|
return status != 0;
|
||||||
@@ -71,7 +72,7 @@ class AndroidBatteryManager implements BatteryManager, Service {
|
|||||||
filter.addAction(ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED);
|
filter.addAction(ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED);
|
||||||
filter.addAction(ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED);
|
filter.addAction(ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED);
|
||||||
}
|
}
|
||||||
appContext.registerReceiver(batteryReceiver, filter);
|
registerReceiver(appContext, batteryReceiver, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ import static java.util.concurrent.TimeUnit.SECONDS;
|
|||||||
import static java.util.logging.Level.INFO;
|
import static java.util.logging.Level.INFO;
|
||||||
import static java.util.logging.Level.WARNING;
|
import static java.util.logging.Level.WARNING;
|
||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
|
import static org.briarproject.bramble.util.AndroidUtils.registerReceiver;
|
||||||
import static org.briarproject.bramble.util.LogUtils.logException;
|
import static org.briarproject.bramble.util.LogUtils.logException;
|
||||||
import static org.briarproject.nullsafety.NullSafety.requireNonNull;
|
import static org.briarproject.nullsafety.NullSafety.requireNonNull;
|
||||||
|
|
||||||
@@ -103,7 +104,7 @@ class AndroidNetworkManager implements NetworkManager, Service {
|
|||||||
filter.addAction(WIFI_AP_STATE_CHANGED_ACTION);
|
filter.addAction(WIFI_AP_STATE_CHANGED_ACTION);
|
||||||
filter.addAction(WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
|
filter.addAction(WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
|
||||||
if (SDK_INT >= 23) filter.addAction(ACTION_DEVICE_IDLE_MODE_CHANGED);
|
if (SDK_INT >= 23) filter.addAction(ACTION_DEVICE_IDLE_MODE_CHANGED);
|
||||||
app.registerReceiver(networkStateReceiver, filter);
|
registerReceiver(app, networkStateReceiver, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ import static java.util.logging.Level.INFO;
|
|||||||
import static java.util.logging.Level.WARNING;
|
import static java.util.logging.Level.WARNING;
|
||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
import static org.briarproject.bramble.util.AndroidUtils.hasBtConnectPermission;
|
import static org.briarproject.bramble.util.AndroidUtils.hasBtConnectPermission;
|
||||||
|
import static org.briarproject.bramble.util.AndroidUtils.registerReceiver;
|
||||||
import static org.briarproject.bramble.util.PrivacyUtils.scrubMacAddress;
|
import static org.briarproject.bramble.util.PrivacyUtils.scrubMacAddress;
|
||||||
|
|
||||||
@MethodsNotNullByDefault
|
@MethodsNotNullByDefault
|
||||||
@@ -112,7 +113,7 @@ class AndroidBluetoothPlugin extends
|
|||||||
filter.addAction(ACTION_STATE_CHANGED);
|
filter.addAction(ACTION_STATE_CHANGED);
|
||||||
filter.addAction(ACTION_SCAN_MODE_CHANGED);
|
filter.addAction(ACTION_SCAN_MODE_CHANGED);
|
||||||
receiver = new BluetoothStateReceiver();
|
receiver = new BluetoothStateReceiver();
|
||||||
app.registerReceiver(receiver, filter);
|
registerReceiver(app, receiver, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -237,7 +238,7 @@ class AndroidBluetoothPlugin extends
|
|||||||
filter.addAction(ACTION_DISCOVERY_STARTED);
|
filter.addAction(ACTION_DISCOVERY_STARTED);
|
||||||
filter.addAction(ACTION_DISCOVERY_FINISHED);
|
filter.addAction(ACTION_DISCOVERY_FINISHED);
|
||||||
filter.addAction(ACTION_FOUND);
|
filter.addAction(ACTION_FOUND);
|
||||||
app.registerReceiver(receiver, filter);
|
registerReceiver(app, receiver, filter);
|
||||||
try {
|
try {
|
||||||
if (adapter.startDiscovery()) {
|
if (adapter.startDiscovery()) {
|
||||||
long now = clock.currentTimeMillis();
|
long now = clock.currentTimeMillis();
|
||||||
|
|||||||
@@ -2,7 +2,10 @@ package org.briarproject.bramble.util;
|
|||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
@@ -21,6 +24,7 @@ import javax.annotation.Nullable;
|
|||||||
import static android.Manifest.permission.BLUETOOTH_CONNECT;
|
import static android.Manifest.permission.BLUETOOTH_CONNECT;
|
||||||
import static android.app.PendingIntent.FLAG_IMMUTABLE;
|
import static android.app.PendingIntent.FLAG_IMMUTABLE;
|
||||||
import static android.content.Context.MODE_PRIVATE;
|
import static android.content.Context.MODE_PRIVATE;
|
||||||
|
import static android.content.Context.RECEIVER_NOT_EXPORTED;
|
||||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||||
import static android.os.Build.VERSION.SDK_INT;
|
import static android.os.Build.VERSION.SDK_INT;
|
||||||
import static android.os.Process.myPid;
|
import static android.os.Process.myPid;
|
||||||
@@ -141,4 +145,20 @@ public class AndroidUtils {
|
|||||||
}
|
}
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Could be replaced to a similar call in ContextCompat once we
|
||||||
|
* use and upgrade to version 1.9.0 or higher of the AndroidX Core library.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
@SuppressLint("UnspecifiedRegisterReceiverFlag") // we specify where needed
|
||||||
|
public static Intent registerReceiver(Context ctx,
|
||||||
|
@Nullable BroadcastReceiver receiver, IntentFilter filter) {
|
||||||
|
if (SDK_INT >= 33) {
|
||||||
|
return ctx.registerReceiver(receiver, filter,
|
||||||
|
RECEIVER_NOT_EXPORTED);
|
||||||
|
} else {
|
||||||
|
return ctx.registerReceiver(receiver, filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -388,7 +388,6 @@ abstract class AbstractBluetoothPlugin<S, SS> implements BluetoothPlugin,
|
|||||||
}
|
}
|
||||||
// Validate the UUID
|
// Validate the UUID
|
||||||
try {
|
try {
|
||||||
//noinspection ResultOfMethodCallIgnored
|
|
||||||
UUID.fromString(uuid);
|
UUID.fromString(uuid);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
if (LOG.isLoggable(WARNING)) LOG.warning("Invalid UUID " + uuid);
|
if (LOG.isLoggable(WARNING)) LOG.warning("Invalid UUID " + uuid);
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ def getStdout = { command, defaultValue ->
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdk 33
|
compileSdk 34
|
||||||
buildToolsVersion '33.0.0'
|
buildToolsVersion '34.0.0'
|
||||||
|
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
doNotStrip '**/*.so'
|
doNotStrip '**/*.so'
|
||||||
@@ -25,7 +25,7 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 33
|
targetSdkVersion 34
|
||||||
versionCode 10513
|
versionCode 10513
|
||||||
versionName "1.5.13"
|
versionName "1.5.13"
|
||||||
applicationId "org.briarproject.briar.android"
|
applicationId "org.briarproject.briar.android"
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
<uses-permission-sdk-23 android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
<uses-permission-sdk-23 android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||||
<uses-permission-sdk-23 android:name="android.permission.USE_BIOMETRIC" />
|
<uses-permission-sdk-23 android:name="android.permission.USE_BIOMETRIC" />
|
||||||
<uses-permission-sdk-23 android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission-sdk-23 android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
|
<uses-permission-sdk-23 android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
|
||||||
|
<uses-permission-sdk-23 android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
||||||
|
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.HIDE_OVERLAY_WINDOWS"
|
android:name="android.permission.HIDE_OVERLAY_WINDOWS"
|
||||||
@@ -68,7 +70,8 @@
|
|||||||
|
|
||||||
<service
|
<service
|
||||||
android:name="org.briarproject.briar.android.BriarService"
|
android:name="org.briarproject.briar.android.BriarService"
|
||||||
android:exported="false">
|
android:exported="false"
|
||||||
|
android:foregroundServiceType="connectedDevice|dataSync">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="org.briarproject.briar.android.BriarService" />
|
<action android:name="org.briarproject.briar.android.BriarService" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
|||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager.StartResult;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager.StartResult;
|
||||||
import org.briarproject.bramble.api.system.AndroidExecutor;
|
import org.briarproject.bramble.api.system.AndroidExecutor;
|
||||||
import org.briarproject.bramble.api.system.Clock;
|
import org.briarproject.bramble.api.system.Clock;
|
||||||
|
import org.briarproject.bramble.util.AndroidUtils;
|
||||||
import org.briarproject.briar.R;
|
import org.briarproject.briar.R;
|
||||||
import org.briarproject.briar.android.logout.HideUiActivity;
|
import org.briarproject.briar.android.logout.HideUiActivity;
|
||||||
import org.briarproject.briar.api.android.AndroidNotificationManager;
|
import org.briarproject.briar.api.android.AndroidNotificationManager;
|
||||||
@@ -174,7 +175,8 @@ public class BriarService extends Service {
|
|||||||
filter.addAction(ACTION_SHUTDOWN);
|
filter.addAction(ACTION_SHUTDOWN);
|
||||||
filter.addAction("android.intent.action.QUICKBOOT_POWEROFF");
|
filter.addAction("android.intent.action.QUICKBOOT_POWEROFF");
|
||||||
filter.addAction("com.htc.intent.action.QUICKBOOT_POWEROFF");
|
filter.addAction("com.htc.intent.action.QUICKBOOT_POWEROFF");
|
||||||
registerReceiver(receiver, filter);
|
AndroidUtils.registerReceiver(getApplicationContext(), receiver,
|
||||||
|
filter);
|
||||||
}, "LifecycleStartup");
|
}, "LifecycleStartup");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,7 +222,9 @@ public class BriarService extends Service {
|
|||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
LOG.info("Destroyed");
|
LOG.info("Destroyed");
|
||||||
stopForeground(true);
|
stopForeground(true);
|
||||||
if (receiver != null) unregisterReceiver(receiver);
|
if (receiver != null) {
|
||||||
|
getApplicationContext().unregisterReceiver(receiver);
|
||||||
|
}
|
||||||
// Stop the services in a background thread
|
// Stop the services in a background thread
|
||||||
wakeLockManager.executeWakefully(() -> {
|
wakeLockManager.executeWakefully(() -> {
|
||||||
if (started) lifecycleManager.stopServices();
|
if (started) lifecycleManager.stopServices();
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import static android.os.PowerManager.ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED;
|
|||||||
import static android.os.PowerManager.ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED;
|
import static android.os.PowerManager.ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED;
|
||||||
import static java.util.logging.Level.WARNING;
|
import static java.util.logging.Level.WARNING;
|
||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
|
import static org.briarproject.bramble.util.AndroidUtils.registerReceiver;
|
||||||
|
|
||||||
class DozeWatchdogImpl implements DozeWatchdog, Service {
|
class DozeWatchdogImpl implements DozeWatchdog, Service {
|
||||||
|
|
||||||
@@ -48,7 +49,7 @@ class DozeWatchdogImpl implements DozeWatchdog, Service {
|
|||||||
filter.addAction(ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED);
|
filter.addAction(ACTION_DEVICE_LIGHT_IDLE_MODE_CHANGED);
|
||||||
filter.addAction(ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED);
|
filter.addAction(ACTION_LOW_POWER_STANDBY_ENABLED_CHANGED);
|
||||||
}
|
}
|
||||||
appContext.registerReceiver(receiver, filter);
|
registerReceiver(appContext, receiver, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ import static android.content.pm.PackageManager.GET_PERMISSIONS;
|
|||||||
import static android.content.pm.PackageManager.GET_SIGNATURES;
|
import static android.content.pm.PackageManager.GET_SIGNATURES;
|
||||||
import static android.os.Build.VERSION.SDK_INT;
|
import static android.os.Build.VERSION.SDK_INT;
|
||||||
import static java.util.logging.Level.WARNING;
|
import static java.util.logging.Level.WARNING;
|
||||||
|
import static org.briarproject.bramble.util.AndroidUtils.registerReceiver;
|
||||||
import static org.briarproject.bramble.util.LogUtils.logException;
|
import static org.briarproject.bramble.util.LogUtils.logException;
|
||||||
|
|
||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
@@ -207,7 +208,7 @@ class ScreenFilterMonitorImpl implements ScreenFilterMonitor, Service {
|
|||||||
filter.addAction(ACTION_PACKAGE_REPLACED);
|
filter.addAction(ACTION_PACKAGE_REPLACED);
|
||||||
filter.addDataScheme("package");
|
filter.addDataScheme("package");
|
||||||
receiver = new PackageBroadcastReceiver();
|
receiver = new PackageBroadcastReceiver();
|
||||||
app.registerReceiver(receiver, filter);
|
registerReceiver(app, receiver, filter);
|
||||||
cachedApps = null;
|
cachedApps = null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE;
|
|||||||
import static org.briarproject.bramble.api.plugin.Plugin.State.DISABLED;
|
import static org.briarproject.bramble.api.plugin.Plugin.State.DISABLED;
|
||||||
import static org.briarproject.bramble.api.plugin.Plugin.State.INACTIVE;
|
import static org.briarproject.bramble.api.plugin.Plugin.State.INACTIVE;
|
||||||
import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING;
|
import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING;
|
||||||
|
import static org.briarproject.bramble.util.AndroidUtils.registerReceiver;
|
||||||
import static org.briarproject.bramble.util.LogUtils.logException;
|
import static org.briarproject.bramble.util.LogUtils.logException;
|
||||||
import static org.briarproject.bramble.util.StringUtils.ISO_8859_1;
|
import static org.briarproject.bramble.util.StringUtils.ISO_8859_1;
|
||||||
import static org.briarproject.briar.android.contact.add.nearby.AddNearbyContactPermissionManager.areEssentialPermissionsGranted;
|
import static org.briarproject.briar.android.contact.add.nearby.AddNearbyContactPermissionManager.areEssentialPermissionsGranted;
|
||||||
@@ -208,7 +209,7 @@ class AddNearbyContactViewModel extends AndroidViewModel
|
|||||||
qrCodeDecoder = new QrCodeDecoder(androidExecutor, ioExecutor, this);
|
qrCodeDecoder = new QrCodeDecoder(androidExecutor, ioExecutor, this);
|
||||||
eventBus.addListener(this);
|
eventBus.addListener(this);
|
||||||
IntentFilter filter = new IntentFilter(ACTION_SCAN_MODE_CHANGED);
|
IntentFilter filter = new IntentFilter(ACTION_SCAN_MODE_CHANGED);
|
||||||
getApplication().registerReceiver(bluetoothReceiver, filter);
|
registerReceiver(getApplication(), bluetoothReceiver, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ import static java.util.logging.Level.INFO;
|
|||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
import static org.briarproject.bramble.api.plugin.Plugin.PREF_PLUGIN_ENABLE;
|
import static org.briarproject.bramble.api.plugin.Plugin.PREF_PLUGIN_ENABLE;
|
||||||
import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING;
|
import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING;
|
||||||
|
import static org.briarproject.bramble.util.AndroidUtils.registerReceiver;
|
||||||
import static org.briarproject.bramble.util.LogUtils.logDuration;
|
import static org.briarproject.bramble.util.LogUtils.logDuration;
|
||||||
import static org.briarproject.bramble.util.LogUtils.now;
|
import static org.briarproject.bramble.util.LogUtils.now;
|
||||||
|
|
||||||
@@ -96,7 +97,7 @@ public class PluginViewModel extends DbViewModel implements EventListener {
|
|||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
eventBus.addListener(this);
|
eventBus.addListener(this);
|
||||||
receiver = new BluetoothStateReceiver();
|
receiver = new BluetoothStateReceiver();
|
||||||
app.registerReceiver(receiver, new IntentFilter(ACTION_STATE_CHANGED));
|
registerReceiver(app, receiver, new IntentFilter(ACTION_STATE_CHANGED));
|
||||||
networkStatus.setValue(networkManager.getNetworkStatus());
|
networkStatus.setValue(networkManager.getNetworkStatus());
|
||||||
torPluginState.setValue(getTransportState(TorConstants.ID));
|
torPluginState.setValue(getTransportState(TorConstants.ID));
|
||||||
wifiPluginState.setValue(getTransportState(LanTcpConstants.ID));
|
wifiPluginState.setValue(getTransportState(LanTcpConstants.ID));
|
||||||
|
|||||||
@@ -398,8 +398,8 @@ public class UiUtils {
|
|||||||
|
|
||||||
public static void startDevReportActivity(Context ctx,
|
public static void startDevReportActivity(Context ctx,
|
||||||
Class<? extends FragmentActivity> activity, @Nullable Throwable t,
|
Class<? extends FragmentActivity> activity, @Nullable Throwable t,
|
||||||
@Nullable Long appStartTime, @Nullable byte[] logKey, @Nullable
|
@Nullable Long appStartTime, @Nullable byte[] logKey,
|
||||||
String initialComment) {
|
@Nullable String initialComment) {
|
||||||
// Collect memory stats from the current process, not the crash
|
// Collect memory stats from the current process, not the crash
|
||||||
// reporter process
|
// reporter process
|
||||||
ActivityManager am =
|
ActivityManager am =
|
||||||
|
|||||||
Reference in New Issue
Block a user