/*
* Copyright 2010 Kevin Gaudin
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.acra;
import android.content.res.Configuration;
import org.acra.annotation.ReportsCrashes;
/**
* Specifies all the different fields available in a crash report.
*
* @author Normal
*
*/
public enum ReportField {
/**
* Report Identifier.
*/
REPORT_ID,
/**
* Application version code. This is the incremental integer version code
* used to differentiate versions on the android market.
*
* @see android.content.pm.PackageInfo#versionCode
*/
APP_VERSION_CODE,
/**
* Application version name.
*
* @see android.content.pm.PackageInfo#versionName
*/
APP_VERSION_NAME,
/**
* Application package name.
*
* @see android.content.Context#getPackageName()
*/
PACKAGE_NAME,
/**
* Base path of the application's private file folder.
*
* @see android.content.Context#getFilesDir()
*/
FILE_PATH,
/**
* Device model name.
*
* @see android.os.Build#MODEL
*/
PHONE_MODEL,
/**
* Device android version name.
*
* @see android.os.Build.VERSION#RELEASE
*/
ANDROID_VERSION,
/**
* Android Build details.
*
* @see android.os.Build
*/
BUILD {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* Device brand (manufacturer or carrier).
*
* @see android.os.Build#BRAND
*/
BRAND,
/**
* Device overall product code.
*
* @see android.os.Build#PRODUCT
*/
PRODUCT,
/**
* Estimation of the total device memory size based on filesystem stats.
*/
TOTAL_MEM_SIZE,
/**
* Estimation of the available device memory size based on filesystem stats.
*/
AVAILABLE_MEM_SIZE,
/**
* Contains key = value pairs defined by the application developer during
* the application build.
*/
BUILD_CONFIG {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* Contains key = value pairs defined by the application developer during
* the application execution.
*/
CUSTOM_DATA {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* The Holy Stack Trace.
*/
STACK_TRACE,
/**
* A hash of the stack trace, taking only method names into account.<br>
* Line numbers are stripped out before computing the hash. This can help you
* uniquely identify stack traces.
*/
STACK_TRACE_HASH,
/**
* {@link Configuration} fields state on the application start.
*
* @see Configuration
*/
INITIAL_CONFIGURATION {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* {@link Configuration} fields state on the application crash.
*
* @see Configuration
*/
CRASH_CONFIGURATION {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* Device display specifications.
*
* @see android.view.WindowManager#getDefaultDisplay()
*/
DISPLAY {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* Comment added by the user in the CrashReportDialog displayed in
* {@link ReportingInteractionMode#NOTIFICATION} mode.
*/
USER_COMMENT,
/**
* User date on application start.
*/
USER_APP_START_DATE,
/**
* User date immediately after the crash occurred.
*/
USER_CRASH_DATE,
/**
* Memory state details for the application process.
*/
DUMPSYS_MEMINFO,
/**
* Content of the android.os.DropBoxManager (introduced in API level 8).
* Requires READ_LOGS permission.
*/
DROPBOX,
/**
* Logcat default extract. Requires READ_LOGS permission.
*/
LOGCAT,
/**
* Logcat eventslog extract. Requires READ_LOGS permission.
*/
EVENTSLOG,
/**
* Logcat radio extract. Requires READ_LOGS permission.
*/
RADIOLOG,
/**
* True if the report has been explicitly sent silently by the developer.
*/
IS_SILENT,
/**
* Device unique ID (IMEI). Requires READ_PHONE_STATE permission.
*/
DEVICE_ID,
/**
* Installation unique ID. This identifier allow you to track a specific
* user application installation without using any personal data.
*/
INSTALLATION_ID,
/**
* User email address. Can be provided by the user in the
* {@link ACRA#PREF_USER_EMAIL_ADDRESS} SharedPreference.
*/
USER_EMAIL,
/**
* Features declared as available on this device by the system.
*/
DEVICE_FEATURES {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* External storage state and standard directories.
*/
ENVIRONMENT {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* System settings.
*/
SETTINGS_SYSTEM {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* Secure settings (applications can't modify them).
*/
SETTINGS_SECURE {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* Global settings, introduced in Android 4.2 (API level 17) to centralize settings for multiple users.
*/
SETTINGS_GLOBAL {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* SharedPreferences contents
*/
SHARED_PREFERENCES {
@Override
public boolean containsKeyValuePairs() {
return true;
}
},
/**
* Content of your own application log file. To be configured with
* {@link ReportsCrashes#applicationLogFile()} to define the path/name of
* the log file and {@link ReportsCrashes#applicationLogFileLines()} to set
* the number of lines you want to be retrieved.
*/
APPLICATION_LOG,
/**
* Since Android API Level 16 (Android 4.1 - Jelly Beans), retrieve the list
* of supported Media codecs and their capabilities (color format, profile
* and level).
*/
MEDIA_CODEC_LIST,
/**
* Retrieves details of the failing thread (id, name, group name).
*/
THREAD_DETAILS,
/**
* Retrieves the user IP address(es).
*/
USER_IP;
/**
* Whether this field is a collection of key/value pairs.
*
* @return true if the field contains a string with a key/value pair on each
* line, key and value separated by an equal sign
*
*/
public boolean containsKeyValuePairs() {
return false;
}
}