Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev 5.1.0 #631

Merged
merged 14 commits into from
Feb 4, 2018
1 change: 0 additions & 1 deletion acra-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ android {
}

dependencies {
//noinspection GradleDependency
implementation "com.android.support:support-compat:$supportVersion"
api project(':acra-javacore')
compileOnly "com.google.auto.service:auto-service:$autoServiceVersion"
Expand Down
1 change: 1 addition & 0 deletions acra-core/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
<service
android:name="org.acra.sender.SenderService"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":acra" />

<provider
Expand Down
12 changes: 6 additions & 6 deletions acra-core/src/main/java/org/acra/ACRA.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@
import org.acra.log.AndroidLogDelegate;
import org.acra.prefs.SharedPreferencesFactory;
import org.acra.reporter.ErrorReporterImpl;
import org.acra.reporter.ErrorReporterStub;
import org.acra.util.ApplicationStartupProcessor;
import org.acra.util.StreamReader;
import org.acra.util.StubCreator;

import java.io.IOException;

Expand Down Expand Up @@ -108,7 +108,7 @@ private ACRA() {
public static final String PREF_LAST_VERSION_NR = "acra.lastVersionNr";

@NonNull
private static ErrorReporter errorReporterSingleton = new ErrorReporterStub();
private static ErrorReporter errorReporterSingleton = StubCreator.createErrorReporterStub();

/**
* <p>
Expand Down Expand Up @@ -200,10 +200,10 @@ public static void init(@NonNull Application app, @NonNull CoreConfiguration con
log.d(LOG_TAG, "Not initialising ACRA to listen for uncaught Exceptions as this is the SendWorker process and we only send reports, we don't capture them to avoid infinite loops");
}

final boolean supportedAndroidVersion = Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD;
final boolean supportedAndroidVersion = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
if (!supportedAndroidVersion) {
// NB We keep initialising so that everything is configured. But ACRA is never enabled below.
log.w(LOG_TAG, "ACRA 5.0.0+ requires Gingerbread or greater. ACRA is disabled and will NOT catch crashes or send messages.");
log.w(LOG_TAG, "ACRA 5.1.0+ requires ICS or greater. ACRA is disabled and will NOT catch crashes or send messages.");
}

if (isInitialised()) {
Expand All @@ -222,7 +222,7 @@ public static void init(@NonNull Application app, @NonNull CoreConfiguration con
new LegacyFileHandler(app, prefs).updateToCurrentVersionIfNecessary();
if (!senderServiceProcess) {
// Initialize ErrorReporter with all required data
final boolean enableAcra = supportedAndroidVersion && !SharedPreferencesFactory.shouldDisableACRA(prefs);
final boolean enableAcra = supportedAndroidVersion && SharedPreferencesFactory.shouldEnableACRA(prefs);
// Indicate that ACRA is or is not listening for crashes.
log.i(LOG_TAG, "ACRA is " + (enableAcra ? "enabled" : "disabled") + " for " + app.getPackageName() + ", initializing...");
ErrorReporterImpl reporter = new ErrorReporterImpl(app, config, enableAcra, supportedAndroidVersion);
Expand All @@ -246,7 +246,7 @@ public static void init(@NonNull Application app, @NonNull CoreConfiguration con
*/
@SuppressWarnings("unused")
public static boolean isInitialised() {
return errorReporterSingleton.isRegistered();
return errorReporterSingleton instanceof ErrorReporterImpl;
}

/**
Expand Down
5 changes: 0 additions & 5 deletions acra-core/src/main/java/org/acra/ErrorReporter.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,6 @@ public interface ErrorReporter {
*/
void setEnabled(boolean enabled);

/**
* @return if this instance is the current DefaultUncaughtExceptionHandler
*/
boolean isRegistered();

/**
* Send a normal report for the given exception
*
Expand Down
2 changes: 1 addition & 1 deletion acra-core/src/main/java/org/acra/annotation/AcraCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
@Configuration(baseBuilderClass = BaseCoreConfigurationBuilder.class, createBuilderFactory = false)
@Configuration(baseBuilderClass = BaseCoreConfigurationBuilder.class, isPlugin = false)
public @interface AcraCore {

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
public class AcraContentProvider extends ContentProvider {
private static final String[] COLUMNS = {
OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE};
public static final String MIME_TYPE_OCTET_STREAM = "application/octet-stream";
private static final String MIME_TYPE_OCTET_STREAM = "application/octet-stream";
private String authority;

@Override
Expand Down Expand Up @@ -219,6 +219,7 @@ public static Uri getUriForFile(@NonNull Context context, @NonNull File file) {
* @param relativePath the file path
* @return the uri
*/
@SuppressWarnings("WeakerAccess")
@NonNull
public static Uri getUriForFile(@NonNull Context context, @NonNull Directory directory, @NonNull String relativePath) {
final Uri.Builder builder = new Uri.Builder()
Expand Down
82 changes: 37 additions & 45 deletions acra-core/src/main/java/org/acra/builder/LastActivityManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,9 @@

import android.app.Activity;
import android.app.Application;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import org.acra.ACRA;

import java.lang.ref.WeakReference;
Expand All @@ -44,50 +42,46 @@ public final class LastActivityManager {
* @param application the application to attach to
*/
public LastActivityManager(@NonNull Application application) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {

// ActivityLifecycleCallback only available for API14+
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(@NonNull Activity activity, Bundle savedInstanceState) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityCreated " + activity.getClass());
lastActivityCreated = new WeakReference<>(activity);
}
application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(@NonNull Activity activity, Bundle savedInstanceState) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityCreated " + activity.getClass());
lastActivityCreated = new WeakReference<>(activity);
}

@Override
public void onActivityStarted(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityStarted " + activity.getClass());
}
@Override
public void onActivityStarted(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityStarted " + activity.getClass());
}

@Override
public void onActivityResumed(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityResumed " + activity.getClass());
}
@Override
public void onActivityResumed(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityResumed " + activity.getClass());
}

@Override
public void onActivityPaused(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityPaused " + activity.getClass());
}
@Override
public void onActivityPaused(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityPaused " + activity.getClass());
}

@Override
public void onActivityStopped(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityStopped " + activity.getClass());
synchronized (this) {
notify();
}
@Override
public void onActivityStopped(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityStopped " + activity.getClass());
synchronized (this) {
notify();
}
}

@Override
public void onActivitySaveInstanceState(@NonNull Activity activity, Bundle outState) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivitySaveInstanceState " + activity.getClass());
}
@Override
public void onActivitySaveInstanceState(@NonNull Activity activity, Bundle outState) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivitySaveInstanceState " + activity.getClass());
}

@Override
public void onActivityDestroyed(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityDestroyed " + activity.getClass());
}
});
}
@Override
public void onActivityDestroyed(@NonNull Activity activity) {
if (ACRA.DEV_LOGGING) ACRA.log.d(LOG_TAG, "onActivityDestroyed " + activity.getClass());
}
});
}

/**
Expand All @@ -111,12 +105,10 @@ public void clearLastActivity() {
* @param timeOutInMillis timeout for wait
*/
public void waitForActivityStop(int timeOutInMillis) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
synchronized (this) {
try {
wait(timeOutInMillis);
} catch (InterruptedException ignored) {
}
synchronized (this) {
try {
wait(timeOutInMillis);
} catch (InterruptedException ignored) {
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion acra-core/src/main/java/org/acra/builder/ReportExecutor.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.acra.interaction.ReportInteractionExecutor;
import org.acra.sender.SenderServiceStarter;
import org.acra.util.ProcessFinisher;
import org.acra.util.ToastSender;

import java.io.File;
import java.util.ArrayList;
Expand Down Expand Up @@ -199,7 +200,7 @@ public final void execute(@NonNull final ReportBuilder reportBuilder) {
@Override
public void run() {
Looper.prepare();
Toast.makeText(context, warning, Toast.LENGTH_LONG).show();
ToastSender.sendToast(context, warning, Toast.LENGTH_LONG);
Looper.loop();
}
}).start();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public final void collect(@NonNull Context context, @NonNull CoreConfiguration c
* @param target put results here
* @throws Exception if collection failed
*/
abstract void collect(ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) throws Exception;
abstract void collect(@NonNull ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) throws Exception;

/**
* {@inheritDoc}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public ConfigurationCollector() {
}

@Override
void collect(ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config,
void collect(@NonNull ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config,
@NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) {
switch (reportField) {
case INITIAL_CONFIGURATION:
Expand Down Expand Up @@ -129,6 +129,7 @@ private JSONObject configToJson(@NonNull Configuration conf) {
return result;
}

@NonNull
private Map<String, SparseArray<String>> getValueArrays() {
final Map<String, SparseArray<String>> valueArrays = new HashMap<>();
final SparseArray<String> hardKeyboardHiddenValues = new SparseArray<>();
Expand Down Expand Up @@ -197,7 +198,7 @@ private Map<String, SparseArray<String>> getValueArrays() {
* constant name.
* @throws IllegalAccessException if the supplied field is inaccessible.
*/
private Object getFieldValueName(Map<String, SparseArray<String>> valueArrays, @NonNull Configuration conf, @NonNull Field f) throws IllegalAccessException {
private Object getFieldValueName(@NonNull Map<String, SparseArray<String>> valueArrays, @NonNull Configuration conf, @NonNull Field f) throws IllegalAccessException {
final String fieldName = f.getName();
switch (fieldName) {
case FIELD_MCC:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public CustomDataCollector(){
}

@Override
void collect(ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) {
void collect(@NonNull ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) {
target.put(ReportField.CUSTOM_DATA, new JSONObject(reportBuilder.getCustomData()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public DeviceFeaturesCollector() {
}

@Override
void collect(ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) throws JSONException {
void collect(@NonNull ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) throws JSONException {
final JSONObject result = new JSONObject();
final PackageManager pm = context.getPackageManager();
final FeatureInfo[] features = pm.getSystemAvailableFeatures();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ boolean shouldCollect(@NonNull Context context, @NonNull CoreConfiguration confi
@SuppressLint("HardwareIds")
@RequiresPermission(Manifest.permission.READ_PHONE_STATE)
@Override
void collect(ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) throws Exception {
void collect(@NonNull ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) throws Exception {
target.put(ReportField.DEVICE_ID, SystemServices.getTelephonyManager(context).getDeviceId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public DisplayManagerCollector() {
}

@Override
void collect(ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) {
void collect(@NonNull ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) {
final JSONObject result = new JSONObject();
for (Display display : DisplayManagerCompat.getInstance(context).getDisplays()) {
try {
Expand Down Expand Up @@ -90,7 +90,7 @@ private JSONObject collectDisplayData(@NonNull Display display) throws JSONExcep
return result;
}

private void collectIsValid(@NonNull Display display, JSONObject container) throws JSONException {
private void collectIsValid(@NonNull Display display, @NonNull JSONObject container) throws JSONException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
container.put("isValid", display.isValid());
}
Expand All @@ -116,23 +116,19 @@ private String rotationToString(int rotation) {
}
}

private void collectRectSize(@NonNull Display display, JSONObject container) throws JSONException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
final Rect size = new Rect();
display.getRectSize(size);
container.put("rectSize", new JSONArray(Arrays.asList(size.top, size.left, size.width(), size.height())));
}
private void collectRectSize(@NonNull Display display, @NonNull JSONObject container) throws JSONException {
final Rect size = new Rect();
display.getRectSize(size);
container.put("rectSize", new JSONArray(Arrays.asList(size.top, size.left, size.width(), size.height())));
}

private void collectSize(@NonNull Display display, JSONObject container) throws JSONException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
final Point size = new Point();
display.getSize(size);
container.put("size", new JSONArray(Arrays.asList(size.x, size.y)));
}
private void collectSize(@NonNull Display display, @NonNull JSONObject container) throws JSONException {
final Point size = new Point();
display.getSize(size);
container.put("size", new JSONArray(Arrays.asList(size.x, size.y)));
}

private void collectRealSize(@NonNull Display display, JSONObject container) throws JSONException {
private void collectRealSize(@NonNull Display display, @NonNull JSONObject container) throws JSONException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
final Point size = new Point();
display.getRealSize(size);
Expand Down Expand Up @@ -168,21 +164,21 @@ private void collectFlags(@NonNull Display display, @NonNull JSONObject containe
}
}

private void collectName(@NonNull Display display, JSONObject container) throws JSONException {
private void collectName(@NonNull Display display, @NonNull JSONObject container) throws JSONException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
container.put("name", display.getName());
}
}

private void collectMetrics(@NonNull Display display, JSONObject container) throws JSONException {
private void collectMetrics(@NonNull Display display, @NonNull JSONObject container) throws JSONException {
final DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
final JSONObject result = new JSONObject();
collectMetrics(metrics, result);
container.put("metrics", result);
}

private void collectRealMetrics(@NonNull Display display, JSONObject container) throws JSONException {
private void collectRealMetrics(@NonNull Display display, @NonNull JSONObject container) throws JSONException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
final DisplayMetrics metrics = new DisplayMetrics();
display.getRealMetrics(metrics);
Expand All @@ -192,7 +188,7 @@ private void collectRealMetrics(@NonNull Display display, JSONObject container)
}
}

private void collectMetrics(@NonNull DisplayMetrics metrics, JSONObject container) throws JSONException {
private void collectMetrics(@NonNull DisplayMetrics metrics, @NonNull JSONObject container) throws JSONException {
container.put("density", metrics.density)
.put("densityDpi", metrics.densityDpi)
.put("scaledDensity", "x" + metrics.scaledDensity)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public Order getOrder() {
}

@Override
void collect(ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) throws Exception{
void collect(@NonNull ReportField reportField, @NonNull Context context, @NonNull CoreConfiguration config, @NonNull ReportBuilder reportBuilder, @NonNull CrashReportData target) throws Exception{
final DropBoxManager dropbox = SystemServices.getDropBoxManager(context);

final Calendar calendar = Calendar.getInstance();
Expand Down
Loading