List of usage examples for android.os Build SUPPORTED_ABIS
String[] SUPPORTED_ABIS
To view the source code for android.os Build SUPPORTED_ABIS.
Click Source Link
From source file:org.kei.android.phone.netcap.OutputFragment.java
@Override public void onClick(final View v) { if (v.equals(refreshBT)) { adapter.clear();/*w w w. ja v a 2 s .co m*/ try { final List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); if (interfaces != null && interfaces.size() != 0) adapter.add(getResources().getText(R.string.any).toString()); for (final NetworkInterface ni : interfaces) if (ni.isUp()) adapter.add(ni.getName()); } catch (final Throwable e) { logException(e); } } else if (v.equals(browseOutputCaptureTV)) { final Map<String, String> extra = new HashMap<String, String>(); extra.put(FileChooser.FILECHOOSER_TYPE_KEY, "" + FileChooser.FILECHOOSER_TYPE_DIRECTORY_ONLY); extra.put(FileChooser.FILECHOOSER_TITLE_KEY, "Save"); extra.put(FileChooser.FILECHOOSER_MESSAGE_KEY, "Use this folder:? "); extra.put(FileChooser.FILECHOOSER_DEFAULT_DIR, browseOutputCaptureTV.getText().toString()); extra.put(FileChooser.FILECHOOSER_SHOW_KEY, "" + FileChooser.FILECHOOSER_SHOW_DIRECTORY_ONLY); extra.put(FileChooser.FILECHOOSER_USER_MESSAGE, getClass().getSimpleName()); Tools.switchToForResult(owner, FileChooserActivity.class, extra, FileChooserActivity.FILECHOOSER_SELECTION_TYPE_DIRECTORY); } else if (v.equals(captureBT)) { if (!captureBT.isChecked()) { captureBT.setChecked(true); delete(); } else { String sdest = browseOutputCaptureTV.getText().toString(); if (sdest.isEmpty()) { Tools.showAlertDialog(owner, "Error", "Empty destination folder!"); captureBT.setChecked(false); return; } File legacy = new File(sdest.replaceFirst("emulated/([0-9]+)/", "emulated/legacy/")); File fdest = new File(sdest); Log.i(getClass().getSimpleName(), "Test directory '" + legacy + "'"); if (legacy.isDirectory()) fdest = legacy; if (!fdest.isDirectory()) { Tools.showAlertDialog(owner, "Error", "The destination folder is not a valid directory!"); captureBT.setChecked(false); return; } else if (!fdest.canWrite()) { Tools.showAlertDialog(owner, "Error", "Unable to write into the destination folder!"); captureBT.setChecked(false); return; } if (!RootTools.isAccessGiven()) { Resources r = getResources(); Tools.toast(owner, R.drawable.ic_launcher, r.getString(R.string.root_toast_error)); showResult.setText(" " + r.getString(R.string.root_error)); captureBT.setChecked(false); return; } final PackageManager m = owner.getPackageManager(); String s = owner.getPackageName(); try { final PackageInfo p = m.getPackageInfo(s, 0); s = p.applicationInfo.dataDir; } catch (final PackageManager.NameNotFoundException e) { } s = s + "/netcap"; copyFile(Build.SUPPORTED_ABIS[0] + "/netcap", s, owner); final File netcap = new File(s); if (!netcap.exists()) { Tools.showAlertDialog(owner, "Error", "'netcap' for '" + Build.SUPPORTED_ABIS[0] + "' was not found!"); return; } pname = netcap.getAbsolutePath(); netcap.setExecutable(true); ifaces = ""; String ni = (String) devicesSp.getSelectedItem(); if (ni.equals(getResources().getText(R.string.any).toString())) { for (int i = 0; i < adapter.getCount(); i++) { ni = adapter.getItem(i); if (ni.equals(getResources().getText(R.string.any).toString())) continue; ifaces += ni; if (i < adapter.getCount() - 1) ifaces += ","; } } else ifaces = ni; final File outputFile = new File(fdest, new SimpleDateFormat("yyyyMMdd_hhmmssa'_netcap.pcap'", Locale.US).format(new Date())); buffer.clear(); new Thread(new Runnable() { public void run() { try { String cmd = netcap.getAbsolutePath() + " -i " + ifaces + " -f " + outputFile.getAbsolutePath() + " -d"; if (promiscuousCB.isChecked()) cmd += " -p"; cmd += " 2>&1"; command = new Command(0, cmd) { @Override public void commandOutput(int id, String line) { super.commandOutput(id, line); if (line.startsWith(NETCAP_READY)) pid = line.substring(NETCAP_READY.length()); buffer.add(line); owner.runOnUiThread(new Runnable() { @SuppressWarnings("unchecked") @Override public void run() { final String[] lines = (String[]) buffer.toArray(new String[] {}); final StringBuilder sb = new StringBuilder(); for (final String s : lines) sb.append(" ").append(s).append("\n"); showResult.setText(sb.toString()); } }); } public void commandCompleted(int id, int exitcode) { super.commandCompleted(id, exitcode); owner.runOnUiThread(new Runnable() { @Override public void run() { captureBT.setChecked(false); } }); } public void commandTerminated(int id, String reason) { super.commandTerminated(id, reason); } }; RootTools.getShell(true).add(command); } catch (final Exception e) { logException(e); } } }).start(); } } }
From source file:com.github.chenxiaolong.dualbootpatcher.socket.MbtoolSocket.java
@SuppressWarnings("deprecation") private synchronized boolean executeMbtool(Context context) { PatcherUtils.extractPatcher(context); String abi;/*from w ww. j a v a 2 s. c o m*/ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { abi = Build.SUPPORTED_ABIS[0]; } else { abi = Build.CPU_ABI; } String mbtool = PatcherUtils.getTargetDirectory(context) + "/binaries/android/" + abi + "/mbtool"; return CommandUtils.runRootCommand("mount -o remount,rw /") == 0 && CommandUtils.runRootCommand("mv /mbtool /mbtool.bak || :") == 0 && CommandUtils.runRootCommand("cp " + mbtool + " /mbtool") == 0 && CommandUtils.runRootCommand("chmod 755 /mbtool") == 0 && CommandUtils.runRootCommand("mount -o remount,ro / || :") == 0 && CommandUtils.runRootCommand("/mbtool daemon --replace --daemonize") == 0; }
From source file:de.schildbach.wallet.ui.ReportIssueDialogFragment.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private static String[] supportedAbisLollipop() { return Build.SUPPORTED_ABIS; }
From source file:com.github.chenxiaolong.dualbootpatcher.switcher.service.MbtoolTask.java
private boolean performBackupRestore(BackupRestoreParams params, MbtoolInterface iface) throws IOException, MbtoolCommandException, MbtoolException { printSeparator();/* ww w .j av a 2 s . com*/ switch (params.getAction()) { case BACKUP: printBoldText(Color.MAGENTA, "Backup:\n"); break; case RESTORE: printBoldText(Color.MAGENTA, "Restore:\n"); break; } printBoldText(Color.MAGENTA, "- ROM ID: " + params.getRomId() + "\n"); printBoldText(Color.MAGENTA, "- Targets: " + Arrays.toString(params.getTargets()) + "\n"); printBoldText(Color.MAGENTA, "- Backup name: " + params.getBackupName() + "\n"); printBoldText(Color.MAGENTA, "- Backup dir URI: " + params.getBackupDirUri() + "\n"); printBoldText(Color.MAGENTA, "- Force/overwrite: " + params.getForce() + "\n"); printSeparator(); printBoldText(Color.YELLOW, "Extracting patcher data archive\n"); PatcherUtils.extractPatcher(getContext()); printSeparator(); String backupDir = null; if (params.getBackupDirUri() != null) { backupDir = getPathFromUri(params.getBackupDirUri(), iface); if (backupDir == null) { return false; } } String abi; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { abi = Build.SUPPORTED_ABIS[0]; } else { abi = Build.CPU_ABI; } File mbtoolRecovery = new File(PatcherUtils.getTargetDirectory(getContext()) + File.separator + "binaries" + File.separator + "android" + File.separator + abi + File.separator + "mbtool_recovery"); File mbtoolRecoverySig = new File( PatcherUtils.getTargetDirectory(getContext()) + File.separator + "binaries" + File.separator + "android" + File.separator + abi + File.separator + "mbtool_recovery.sig"); String argv0; switch (params.getAction()) { case BACKUP: argv0 = "backup"; break; case RESTORE: argv0 = "restore"; break; default: throw new IllegalStateException("Invalid action: " + params.getAction()); } ArrayList<String> args = new ArrayList<>(); args.add("-r"); args.add(params.getRomId()); args.add("-t"); args.add(StringUtils.join(params.getTargets(), ',')); if (params.getBackupName() != null) { args.add("-n"); args.add(params.getBackupName()); } if (backupDir != null) { args.add("-d"); args.add(translateEmulatedPath(backupDir)); } if (params.getForce()) { args.add("-f"); } String[] argsArray = args.toArray(new String[args.size()]); printBoldText(Color.YELLOW, "Running " + argv0 + " with arguments: [" + TextUtils.join(", ", args) + "]\n"); SignedExecCompletion completion = iface.signedExec(mbtoolRecovery.getAbsolutePath(), mbtoolRecoverySig.getAbsolutePath(), argv0, argsArray, this); switch (completion.result) { case SignedExecResult.PROCESS_EXITED: printBoldText(completion.exitStatus == 0 ? Color.GREEN : Color.RED, "\nCommand returned: " + completion.exitStatus + "\n"); return completion.exitStatus == 0; case SignedExecResult.PROCESS_KILLED_BY_SIGNAL: printBoldText(Color.RED, "\nProcess killed by signal: " + completion.termSig + "\n"); return false; case SignedExecResult.INVALID_SIGNATURE: printBoldText(Color.RED, "\nThe mbtool binary has an invalid signature. This" + " means DualBootPatcher's data files have been maliciously modified" + " by somebody or another app. The backup/restore process has been" + " cancelled.\n"); return false; case SignedExecResult.OTHER_ERROR: default: printBoldText(Color.RED, "\nError: " + completion.errorMsg + "\n"); return false; } }
From source file:syncthing.android.service.SyncthingInstance.java
void ensureBinaries() { final String[] abis; if (VersionUtils.hasLollipop()) { abis = Build.SUPPORTED_ABIS; } else {/* w ww . ja v a 2 s .c om*/ abis = new String[] { Build.CPU_ABI, Build.CPU_ABI2 }; } String ext = null; for (String abi : abis) { if (StringUtils.equals(abi, "x86_64")) { Timber.i("Found abi %s", abi); ext = "amd64"; break; } else if (StringUtils.equals(abi, "x86")) { Timber.i("Found abi %s", abi); ext = "386"; break; } else if (StringUtils.equals(abi, "armeabi-v7a")) { Timber.i("Found abi %s", abi); ext = "arm"; break; } } if (ext == null) throw new RuntimeException("Unable to find supported arch in " + Arrays.toString(abis)); ensureBinary("syncthing" + "." + ext, SyncthingUtils.getSyncthingBinaryPath(this)); ensureBinary("syncthing-inotify" + "." + ext, SyncthingUtils.getSyncthingInotifyBinaryPath(this)); }
From source file:org.thoughtcrime.securesms.logsubmit.SubmitLogFragment.java
private static Iterable<String> getSupportedAbis() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return Arrays.asList(Build.SUPPORTED_ABIS); } else {/*from w w w .j a v a 2 s .com*/ LinkedList<String> abis = new LinkedList<>(); abis.add(Build.CPU_ABI); if (Build.CPU_ABI2 != null && !"unknown".equals(Build.CPU_ABI2)) { abis.add(Build.CPU_ABI2); } return abis; } }
From source file:android_network.hetnet.vpn_service.Util.java
public static void sendLogcat(final Uri uri, final Context context) { AsyncTask task = new AsyncTask<Object, Object, Intent>() { @Override/* www .j a v a2 s.c om*/ protected Intent doInBackground(Object... objects) { StringBuilder sb = new StringBuilder(); sb.append(context.getString(R.string.msg_issue)); sb.append("\r\n\r\n\r\n\r\n"); // Get version info String version = getSelfVersionName(context); sb.append(String.format("NetGuard: %s/%d\r\n", version, getSelfVersionCode(context))); sb.append(String.format("Android: %s (SDK %d)\r\n", Build.VERSION.RELEASE, Build.VERSION.SDK_INT)); sb.append("\r\n"); // Get device info sb.append(String.format("Brand: %s\r\n", Build.BRAND)); sb.append(String.format("Manufacturer: %s\r\n", Build.MANUFACTURER)); sb.append(String.format("Model: %s\r\n", Build.MODEL)); sb.append(String.format("Product: %s\r\n", Build.PRODUCT)); sb.append(String.format("Device: %s\r\n", Build.DEVICE)); sb.append(String.format("Host: %s\r\n", Build.HOST)); sb.append(String.format("Display: %s\r\n", Build.DISPLAY)); sb.append(String.format("Id: %s\r\n", Build.ID)); sb.append(String.format("Fingerprint: %B\r\n", hasValidFingerprint(context))); String abi; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) abi = Build.CPU_ABI; else abi = (Build.SUPPORTED_ABIS.length > 0 ? Build.SUPPORTED_ABIS[0] : "?"); sb.append(String.format("ABI: %s\r\n", abi)); sb.append("\r\n"); sb.append(String.format("VPN dialogs: %B\r\n", isPackageInstalled("com.android.vpndialogs", context))); try { sb.append(String.format("Prepared: %B\r\n", VpnService.prepare(context) == null)); } catch (Throwable ex) { sb.append("Prepared: ").append((ex.toString())).append("\r\n") .append(Log.getStackTraceString(ex)); } sb.append(String.format("Permission: %B\r\n", hasPhoneStatePermission(context))); sb.append("\r\n"); sb.append(getGeneralInfo(context)); sb.append("\r\n\r\n"); sb.append(getNetworkInfo(context)); sb.append("\r\n\r\n"); sb.append(getSubscriptionInfo(context)); sb.append("\r\n\r\n"); // Get settings SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); Map<String, ?> all = prefs.getAll(); for (String key : all.keySet()) sb.append("Setting: ").append(key).append('=').append(all.get(key)).append("\r\n"); sb.append("\r\n"); // Write logcat OutputStream out = null; try { Log.i(TAG, "Writing logcat URI=" + uri); out = context.getContentResolver().openOutputStream(uri); out.write(getLogcat().toString().getBytes()); out.write(getTrafficLog(context).toString().getBytes()); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); sb.append(ex.toString()).append("\r\n").append(Log.getStackTraceString(ex)).append("\r\n"); } finally { if (out != null) try { out.close(); } catch (IOException ignored) { } } // Build intent Intent sendEmail = new Intent(Intent.ACTION_SEND); sendEmail.setType("message/rfc822"); sendEmail.putExtra(Intent.EXTRA_EMAIL, new String[] { "marcel+netguard@faircode.eu" }); sendEmail.putExtra(Intent.EXTRA_SUBJECT, "NetGuard " + version + " logcat"); sendEmail.putExtra(Intent.EXTRA_TEXT, sb.toString()); sendEmail.putExtra(Intent.EXTRA_STREAM, uri); return sendEmail; } @Override protected void onPostExecute(Intent sendEmail) { if (sendEmail != null) try { context.startActivity(sendEmail); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); } } }; task.execute(); }
From source file:eu.faircode.netguard.Util.java
public static void sendLogcat(final Uri uri, final Context context) { AsyncTask task = new AsyncTask<Object, Object, Intent>() { @Override//from w w w. j ava 2 s .c o m protected Intent doInBackground(Object... objects) { StringBuilder sb = new StringBuilder(); sb.append(context.getString(R.string.msg_issue)); sb.append("\r\n\r\n\r\n\r\n"); // Get version info String version = getSelfVersionName(context); sb.append(String.format("NetGuard: %s/%d\r\n", version, getSelfVersionCode(context))); sb.append(String.format("Android: %s (SDK %d)\r\n", Build.VERSION.RELEASE, Build.VERSION.SDK_INT)); sb.append("\r\n"); // Get device info sb.append(String.format("Brand: %s\r\n", Build.BRAND)); sb.append(String.format("Manufacturer: %s\r\n", Build.MANUFACTURER)); sb.append(String.format("Model: %s\r\n", Build.MODEL)); sb.append(String.format("Product: %s\r\n", Build.PRODUCT)); sb.append(String.format("Device: %s\r\n", Build.DEVICE)); sb.append(String.format("Host: %s\r\n", Build.HOST)); sb.append(String.format("Display: %s\r\n", Build.DISPLAY)); sb.append(String.format("Id: %s\r\n", Build.ID)); sb.append(String.format("Fingerprint: %B\r\n", hasValidFingerprint(context))); String abi; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) abi = Build.CPU_ABI; else abi = (Build.SUPPORTED_ABIS.length > 0 ? Build.SUPPORTED_ABIS[0] : "?"); sb.append(String.format("ABI: %s\r\n", abi)); sb.append("\r\n"); sb.append(String.format("VPN dialogs: %B\r\n", isPackageInstalled("com.android.vpndialogs", context))); try { sb.append(String.format("Prepared: %B\r\n", VpnService.prepare(context) == null)); } catch (Throwable ex) { sb.append("Prepared: ").append((ex.toString())).append("\r\n") .append(Log.getStackTraceString(ex)); } sb.append("\r\n"); sb.append(getGeneralInfo(context)); sb.append("\r\n\r\n"); sb.append(getNetworkInfo(context)); sb.append("\r\n\r\n"); // Get DNS sb.append("DNS system:\r\n"); for (String dns : getDefaultDNS(context)) sb.append("- ").append(dns).append("\r\n"); sb.append("DNS VPN:\r\n"); for (InetAddress dns : ServiceSinkhole.getDns(context)) sb.append("- ").append(dns).append("\r\n"); sb.append("\r\n"); // Get TCP connection info String line; BufferedReader in; try { sb.append("/proc/net/tcp:\r\n"); in = new BufferedReader(new FileReader("/proc/net/tcp")); while ((line = in.readLine()) != null) sb.append(line).append("\r\n"); in.close(); sb.append("\r\n"); sb.append("/proc/net/tcp6:\r\n"); in = new BufferedReader(new FileReader("/proc/net/tcp6")); while ((line = in.readLine()) != null) sb.append(line).append("\r\n"); in.close(); sb.append("\r\n"); } catch (IOException ex) { sb.append(ex.toString()).append("\r\n"); } // Get settings SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); Map<String, ?> all = prefs.getAll(); for (String key : all.keySet()) sb.append("Setting: ").append(key).append('=').append(all.get(key)).append("\r\n"); sb.append("\r\n"); // Write logcat OutputStream out = null; try { Log.i(TAG, "Writing logcat URI=" + uri); out = context.getContentResolver().openOutputStream(uri); out.write(getLogcat().toString().getBytes()); out.write(getTrafficLog(context).toString().getBytes()); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); sb.append(ex.toString()).append("\r\n").append(Log.getStackTraceString(ex)).append("\r\n"); } finally { if (out != null) try { out.close(); } catch (IOException ignored) { } } // Build intent Intent sendEmail = new Intent(Intent.ACTION_SEND); sendEmail.setType("message/rfc822"); sendEmail.putExtra(Intent.EXTRA_EMAIL, new String[] { "marcel+netguard@faircode.eu" }); sendEmail.putExtra(Intent.EXTRA_SUBJECT, "NetGuard " + version + " logcat"); sendEmail.putExtra(Intent.EXTRA_TEXT, sb.toString()); sendEmail.putExtra(Intent.EXTRA_STREAM, uri); return sendEmail; } @Override protected void onPostExecute(Intent sendEmail) { if (sendEmail != null) try { context.startActivity(sendEmail); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); } } }; task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); }
From source file:eu.faircode.adblocker.Util.java
public static void sendLogcat(final Uri uri, final Context context) { AsyncTask task = new AsyncTask<Object, Object, Intent>() { @Override/* w w w .ja v a 2 s. c o m*/ protected Intent doInBackground(Object... objects) { // Get device info StringBuilder sb = new StringBuilder(); String version = getSelfVersionName(context); sb.append(String.format("adblocker: %s/%d\r\n", version, getSelfVersionCode(context))); sb.append(String.format("Android: %s (SDK %d)\r\n", Build.VERSION.RELEASE, Build.VERSION.SDK_INT)); sb.append("\r\n"); sb.append(String.format("Brand: %s\r\n", Build.BRAND)); sb.append(String.format("Manufacturer: %s\r\n", Build.MANUFACTURER)); sb.append(String.format("Model: %s\r\n", Build.MODEL)); sb.append(String.format("Product: %s\r\n", Build.PRODUCT)); sb.append(String.format("Device: %s\r\n", Build.DEVICE)); sb.append(String.format("Host: %s\r\n", Build.HOST)); sb.append(String.format("Display: %s\r\n", Build.DISPLAY)); sb.append(String.format("Id: %s\r\n", Build.ID)); sb.append(String.format("Fingerprint: %B\r\n", hasValidFingerprint(context))); String abi; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) abi = Build.CPU_ABI; else abi = (Build.SUPPORTED_ABIS.length > 0 ? Build.SUPPORTED_ABIS[0] : "?"); sb.append(String.format("ABI: %s\r\n", abi)); sb.append("\r\n"); sb.append(String.format("VPN dialogs: %B\r\n", isPackageInstalled("com.android.vpndialogs", context))); try { sb.append(String.format("Prepared: %B\r\n", VpnService.prepare(context) == null)); } catch (Throwable ex) { sb.append("Prepared: ").append((ex.toString())).append("\r\n") .append(Log.getStackTraceString(ex)); } sb.append(String.format("Permission: %B\r\n", hasPhoneStatePermission(context))); sb.append("\r\n"); sb.append(getGeneralInfo(context)); sb.append("\r\n\r\n"); sb.append(getNetworkInfo(context)); sb.append("\r\n\r\n"); sb.append(getSubscriptionInfo(context)); sb.append("\r\n\r\n"); // Get settings SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); Map<String, ?> all = prefs.getAll(); for (String key : all.keySet()) sb.append("Setting: ").append(key).append('=').append(all.get(key)).append("\r\n"); sb.append("\r\n"); // Finalize message sb.append("Please describe your problem:\r\n"); sb.append("\r\n"); // Write logcat OutputStream out = null; try { Log.i(TAG, "Writing logcat URI=" + uri); out = context.getContentResolver().openOutputStream(uri); out.write(getLogcat().toString().getBytes()); out.write(getTrafficLog(context).toString().getBytes()); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); sb.append(ex.toString()).append("\r\n").append(Log.getStackTraceString(ex)).append("\r\n"); } finally { if (out != null) try { out.close(); } catch (IOException ignored) { } } // Build intent Intent sendEmail = new Intent(Intent.ACTION_SEND); sendEmail.setType("message/rfc822"); sendEmail.putExtra(Intent.EXTRA_EMAIL, new String[] { "marcel+adblocker@faircode.eu" }); sendEmail.putExtra(Intent.EXTRA_SUBJECT, "NetGuard " + version + " logcat"); sendEmail.putExtra(Intent.EXTRA_TEXT, sb.toString()); sendEmail.putExtra(Intent.EXTRA_STREAM, uri); return sendEmail; } @Override protected void onPostExecute(Intent sendEmail) { if (sendEmail != null) try { context.startActivity(sendEmail); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); } } }; task.execute(); }
From source file:com.master.metehan.filtereagle.Util.java
public static void sendLogcat(final Uri uri, final Context context) { AsyncTask task = new AsyncTask<Object, Object, Intent>() { @Override/*from w w w .j a va2s . c o m*/ protected Intent doInBackground(Object... objects) { StringBuilder sb = new StringBuilder(); sb.append(context.getString(R.string.msg_issue)); sb.append("\r\n\r\n\r\n\r\n"); // Get version info String version = getSelfVersionName(context); sb.append(String.format("FilterEagle: %s/%d\r\n", version, getSelfVersionCode(context))); sb.append(String.format("Android: %s (SDK %d)\r\n", Build.VERSION.RELEASE, Build.VERSION.SDK_INT)); sb.append("\r\n"); // Get device info sb.append(String.format("Brand: %s\r\n", Build.BRAND)); sb.append(String.format("Manufacturer: %s\r\n", Build.MANUFACTURER)); sb.append(String.format("Model: %s\r\n", Build.MODEL)); sb.append(String.format("Product: %s\r\n", Build.PRODUCT)); sb.append(String.format("Device: %s\r\n", Build.DEVICE)); sb.append(String.format("Host: %s\r\n", Build.HOST)); sb.append(String.format("Display: %s\r\n", Build.DISPLAY)); sb.append(String.format("Id: %s\r\n", Build.ID)); sb.append(String.format("Fingerprint: %B\r\n", hasValidFingerprint(context))); String abi; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) abi = Build.CPU_ABI; else abi = (Build.SUPPORTED_ABIS.length > 0 ? Build.SUPPORTED_ABIS[0] : "?"); sb.append(String.format("ABI: %s\r\n", abi)); sb.append("\r\n"); sb.append(String.format("VPN dialogs: %B\r\n", isPackageInstalled("com.android.vpndialogs", context))); try { sb.append(String.format("Prepared: %B\r\n", VpnService.prepare(context) == null)); } catch (Throwable ex) { sb.append("Prepared: ").append((ex.toString())).append("\r\n") .append(Log.getStackTraceString(ex)); } sb.append(String.format("Permission: %B\r\n", hasPhoneStatePermission(context))); sb.append("\r\n"); sb.append(getGeneralInfo(context)); sb.append("\r\n\r\n"); sb.append(getNetworkInfo(context)); sb.append("\r\n\r\n"); sb.append(getSubscriptionInfo(context)); sb.append("\r\n\r\n"); // Get settings SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); Map<String, ?> all = prefs.getAll(); for (String key : all.keySet()) sb.append("Setting: ").append(key).append('=').append(all.get(key)).append("\r\n"); sb.append("\r\n"); // Write logcat OutputStream out = null; try { Log.i(TAG, "Writing logcat URI=" + uri); out = context.getContentResolver().openOutputStream(uri); out.write(getLogcat().toString().getBytes()); out.write(getTrafficLog(context).toString().getBytes()); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); sb.append(ex.toString()).append("\r\n").append(Log.getStackTraceString(ex)).append("\r\n"); } finally { if (out != null) try { out.close(); } catch (IOException ignored) { } } // Build intent Intent sendEmail = new Intent(Intent.ACTION_SEND); sendEmail.setType("message/rfc822"); sendEmail.putExtra(Intent.EXTRA_EMAIL, new String[] { "metehan.ozsoy@gmail.com" }); sendEmail.putExtra(Intent.EXTRA_SUBJECT, "FilterEagle " + version + " logcat"); sendEmail.putExtra(Intent.EXTRA_TEXT, sb.toString()); sendEmail.putExtra(Intent.EXTRA_STREAM, uri); return sendEmail; } @Override protected void onPostExecute(Intent sendEmail) { if (sendEmail != null) try { context.startActivity(sendEmail); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); } } }; task.execute(); }