mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-31 06:43:56 +01:00 
			
		
		
		
	Fix log file not being attached (#2316)
* Fix log file not being attached * Add filter for email clients
This commit is contained in:
		
							parent
							
								
									53e186df9a
								
							
						
					
					
						commit
						e389a95592
					
				
					 6 changed files with 59 additions and 17 deletions
				
			
		|  | @ -134,7 +134,7 @@ public class CommonsApplication extends Application { | |||
|     private void initTimber() { | ||||
|         boolean isBeta = ConfigUtils.isBetaFlavour(); | ||||
|         String logFileName = isBeta ? "CommonsBetaAppLogs" : "CommonsAppLogs"; | ||||
|         String logDirectory = LogUtils.getLogDirectory(isBeta); | ||||
|         String logDirectory = LogUtils.getLogDirectory(); | ||||
|         FileLoggingTree tree = new FileLoggingTree( | ||||
|                 Log.DEBUG, | ||||
|                 logFileName, | ||||
|  |  | |||
|  | @ -1,8 +1,12 @@ | |||
| package fr.free.nrw.commons.logging; | ||||
| 
 | ||||
| import android.content.Context; | ||||
| import android.os.Environment; | ||||
| 
 | ||||
| import java.io.File; | ||||
| 
 | ||||
| import fr.free.nrw.commons.upload.FileUtils; | ||||
| import fr.free.nrw.commons.utils.ConfigUtils; | ||||
| 
 | ||||
| /** | ||||
|  * Returns the log directory | ||||
|  */ | ||||
|  | @ -12,14 +16,35 @@ public final class LogUtils { | |||
| 
 | ||||
|     /** | ||||
|      * Returns the directory for saving logs on the device | ||||
|      * @param isBeta | ||||
|      * | ||||
|      * @return | ||||
|      */ | ||||
|     public static String getLogDirectory(boolean isBeta) { | ||||
|         if (isBeta) { | ||||
|             return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/logs/beta"; | ||||
|     public static String getLogDirectory() { | ||||
|         String dirPath; | ||||
|         if (ConfigUtils.isBetaFlavour()) { | ||||
|             dirPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/logs/beta"; | ||||
|         } else { | ||||
|             return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/logs/prod"; | ||||
|             dirPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/logs/prod"; | ||||
|         } | ||||
| 
 | ||||
|         FileUtils.recursivelyCreateDirs(dirPath); | ||||
|         return dirPath; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns the directory for saving logs on the device | ||||
|      * | ||||
|      * @return | ||||
|      */ | ||||
|     public static String getLogZipDirectory() { | ||||
|         String dirPath; | ||||
|         if (ConfigUtils.isBetaFlavour()) { | ||||
|             dirPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/logs/beta/zip"; | ||||
|         } else { | ||||
|             dirPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/logs/prod/zip"; | ||||
|         } | ||||
| 
 | ||||
|         FileUtils.recursivelyCreateDirs(dirPath); | ||||
|         return dirPath; | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -5,10 +5,12 @@ import android.content.Intent; | |||
| import android.net.Uri; | ||||
| import android.support.annotation.NonNull; | ||||
| import android.support.annotation.Nullable; | ||||
| import android.support.v4.content.FileProvider; | ||||
| 
 | ||||
| import org.acra.collector.CrashReportData; | ||||
| import org.acra.sender.ReportSender; | ||||
| import org.apache.commons.codec.Charsets; | ||||
| import org.apache.http.protocol.HTTP; | ||||
| 
 | ||||
| import java.io.BufferedInputStream; | ||||
| import java.io.BufferedOutputStream; | ||||
|  | @ -19,6 +21,7 @@ import java.io.IOException; | |||
| import java.util.zip.ZipEntry; | ||||
| import java.util.zip.ZipOutputStream; | ||||
| 
 | ||||
| import fr.free.nrw.commons.R; | ||||
| import fr.free.nrw.commons.auth.SessionManager; | ||||
| import fr.free.nrw.commons.utils.ConfigUtils; | ||||
| import timber.log.Timber; | ||||
|  | @ -81,19 +84,20 @@ public abstract class LogsSender implements ReportSender { | |||
|         String subject = emailSubject; | ||||
|         String body = emailBody; | ||||
| 
 | ||||
|         Intent emailIntent = new Intent(Intent.ACTION_SENDTO); | ||||
|         emailIntent.setData(Uri.fromParts("mailto", mailTo, null)); | ||||
|         emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | ||||
|         Intent emailIntent = new Intent(Intent.ACTION_SEND); | ||||
|         emailIntent.setType("message/rfc822"); | ||||
|         emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{mailTo}); | ||||
|         emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); | ||||
|         emailIntent.putExtra(Intent.EXTRA_TEXT, body); | ||||
|         emailIntent.putExtra(Intent.EXTRA_STREAM, logFileUri); | ||||
|         context.startActivity(emailIntent); | ||||
|         emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | ||||
|         emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); | ||||
|         context.startActivity(Intent.createChooser(emailIntent, context.getString(R.string.share_logs_using))); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns the URI for the zipped log file | ||||
|      * | ||||
|      * @param context | ||||
|      * @param report | ||||
|      * @return | ||||
|      */ | ||||
|  | @ -106,9 +110,11 @@ public abstract class LogsSender implements ReportSender { | |||
|             attachUserInfo(builder); | ||||
|             attachExtraInfo(builder); | ||||
|             byte[] metaData = builder.toString().getBytes(Charsets.UTF_8); | ||||
|             File zipFile = new File(context.getExternalFilesDir(null), logFileName); | ||||
|             File zipFile = new File(LogUtils.getLogZipDirectory(), logFileName); | ||||
|             writeLogToZipFile(metaData, zipFile); | ||||
|             return Uri.fromFile(zipFile); | ||||
|             return FileProvider | ||||
|                     .getUriForFile(context, | ||||
|                             context.getApplicationContext().getPackageName() + ".provider", zipFile); | ||||
|         } catch (IOException e) { | ||||
|             Timber.w(e, "Error in generating log file"); | ||||
|         } | ||||
|  | @ -159,8 +165,7 @@ public abstract class LogsSender implements ReportSender { | |||
|         FileOutputStream fos = new FileOutputStream(zipFile); | ||||
|         BufferedOutputStream bos = new BufferedOutputStream(fos); | ||||
|         ZipOutputStream zos = new ZipOutputStream(bos); | ||||
|         boolean isBeta = ConfigUtils.isBetaFlavour(); | ||||
|         File logDir = new File(LogUtils.getLogDirectory(isBeta)); | ||||
|         File logDir = new File(LogUtils.getLogDirectory()); | ||||
| 
 | ||||
|         if (!logDir.exists() || logDir.listFiles().length == 0) { | ||||
|             return; | ||||
|  | @ -168,6 +173,9 @@ public abstract class LogsSender implements ReportSender { | |||
| 
 | ||||
|         byte[] buffer = new byte[1024]; | ||||
|         for (File file : logDir.listFiles()) { | ||||
|             if (file.isDirectory()) { | ||||
|                 continue; | ||||
|             } | ||||
|             FileInputStream fis = new FileInputStream(file); | ||||
|             BufferedInputStream bis = new BufferedInputStream(fis); | ||||
|             zos.putNextEntry(new ZipEntry(file.getName())); | ||||
|  |  | |||
|  | @ -152,4 +152,12 @@ public class FileUtils { | |||
|     public static FileInputStream getFileInputStream(String filePath) throws FileNotFoundException { | ||||
|         return new FileInputStream(filePath); | ||||
|     } | ||||
| 
 | ||||
|     public static boolean recursivelyCreateDirs(String dirPath) { | ||||
|         File fileDir = new File(dirPath); | ||||
|         if (!fileDir.exists()) { | ||||
|             return fileDir.mkdirs(); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vivek Maskara
						Vivek Maskara