+++ /dev/null
-package eu.alefzero.owncloud;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.lang.Thread.UncaughtExceptionHandler;
-import java.util.LinkedList;
-import java.util.List;
-
-import eu.alefzero.owncloud.authenticator.AccountAuthenticator;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.os.Environment;
-import android.util.Log;
-
-public class CrashHandler implements UncaughtExceptionHandler {
-
- private Context mContext;
- private static final String TAG = "CrashHandler";
- private static final String crash_filename_template = "crash";
- private static List<String> TAGS;
- private UncaughtExceptionHandler defaultUEH;
-
- static {
- TAGS = new LinkedList<String>();
- TAGS.add("AccountAuthenticator");
- TAGS.add("AccountAuthenticator");
- TAGS.add("ConnectionCheckerRunnable");
- TAGS.add("EasySSLSocketFactory");
- TAGS.add("FileDataStorageManager");
- TAGS.add("PhotoTakenBroadcastReceiver");
- TAGS.add("InstantUploadService");
- TAGS.add("FileDownloader");
- TAGS.add("FileUploader");
- TAGS.add("LocationUpdateService");
- TAGS.add("FileSyncAdapter");
- TAGS.add("AuthActivity");
- TAGS.add("OwnCloudPreferences");
- TAGS.add("FileDetailFragment");
- TAGS.add("FileListFragment");
- TAGS.add("ownCloudUploader");
- TAGS.add("WebdavClient");
- }
-
- public CrashHandler(Context context) {
- mContext = context;
- defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
- }
-
- @Override
- public void uncaughtException(Thread thread, Throwable ex) {
- final Writer writer = new StringWriter();
- final PrintWriter printwriter = new PrintWriter(writer);
- ex.printStackTrace(printwriter);
- final String startrace = writer.toString();
- printwriter.close();
- File ocdir = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), "owncloud");
- ocdir.mkdirs();
-
- String crash_filename = crash_filename_template + System.currentTimeMillis() + ".txt";
- File crashfile = new File(ocdir, crash_filename);
- try {
- ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
- String header = String.format("Model: %s, SDK: %d, Current net: %s\n\n",
- android.os.Build.MODEL,
- android.os.Build.VERSION.SDK_INT,
- cm.getActiveNetworkInfo() != null ? cm.getActiveNetworkInfo().getTypeName() : "NONE");
- Account account = AccountUtils.getCurrentOwnCloudAccount(mContext);
- AccountManager am = AccountManager.get(mContext);
- String header2 = String.format("Account: %s, OCUrl: %s, OCVersion: %s\n\n",
- account.name,
- am.getUserData(account, AccountAuthenticator.KEY_OC_BASE_URL),
- am.getUserData(account, AccountAuthenticator.KEY_OC_VERSION));
-
- crashfile.createNewFile();
- FileWriter fw = new FileWriter(crashfile);
- fw.write(header);
- fw.write(header2);
- fw.write(startrace);
- fw.write("\n\n");
-
- String logcat = "logcat -d *:S ";
-
- for (String s : TAGS)
- logcat += s + ":V ";
-
- Process process = Runtime.getRuntime().exec(logcat);
- BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
- String logline;
- while ((logline = br.readLine()) != null)
- fw.write(logline+"\n");
-
- br.close();
- fw.close();
-
- } catch (Exception e1) {
- Log.e(TAG, "Crash handler failed to run logcat, WTF!");
- defaultUEH.uncaughtException(thread, ex);
- return;
- }
- }
-}