Skip to content

Commit

Permalink
Merge pull request #577 from F43nd1r/attachment
Browse files Browse the repository at this point in the history
improve extensibility of emailsender
  • Loading branch information
F43nd1r committed Apr 17, 2017
2 parents 90d9413 + 109dc47 commit de73a31
Show file tree
Hide file tree
Showing 7 changed files with 203 additions and 64 deletions.
39 changes: 37 additions & 2 deletions acra/src/main/java/org/acra/attachment/AcraContentProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
package org.acra.attachment;

import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.net.Uri;
Expand Down Expand Up @@ -51,7 +53,8 @@ public class AcraContentProvider extends ContentProvider {

@Override
public boolean onCreate() {
authority = getContext().getPackageName() + ".acra";
//noinspection ConstantConditions
authority = getAuthority(getContext());
if (ACRA.DEV_LOGGING) ACRA.log.d(ACRA.LOG_TAG, "Registered content provider for authority " + authority);
return true;
}
Expand Down Expand Up @@ -82,14 +85,15 @@ public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable S

@Nullable
private File getFileForUri(Uri uri) {
if(!"content".equals(uri.getScheme()) || !authority.equals(uri.getAuthority())){
if (!ContentResolver.SCHEME_CONTENT.equals(uri.getScheme()) || !authority.equals(uri.getAuthority())) {
return null;
}
final List<String> segments = new ArrayList<String>(uri.getPathSegments());
if (segments.size() < 2) return null;
final String dir = segments.remove(0).toUpperCase();
try {
final Directory directory = Directory.valueOf(dir);
//noinspection ConstantConditions
return directory.getFile(getContext(), TextUtils.join(File.separator, segments));
} catch (IllegalArgumentException e) {
return null;
Expand Down Expand Up @@ -132,4 +136,35 @@ public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode) thr
}
return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
}

private static String getAuthority(@NonNull Context context) {
return context.getPackageName() + ".acra";
}

/**
* Get an uri for this content provider for the given file
*
* @param context a context
* @param file the file
* @return the uri
*/
public static Uri getUriForFile(@NonNull Context context, @NonNull File file) {
return getUriForFile(context, Directory.ROOT, file.getPath());
}

/**
* Get an uri for this content provider for the given file
*
* @param context a context
* @param directory the directory, to with the path is relative
* @param relativePath the file path
* @return the uri
*/
public static Uri getUriForFile(@NonNull Context context, @NonNull Directory directory, @NonNull String relativePath) {
return new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(getAuthority(context))
.path(directory.name().toLowerCase() + (relativePath.charAt(0) == File.separatorChar ? "" : File.separator) + relativePath)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import org.acra.config.ACRAConfiguration;

import java.util.ArrayList;
import java.util.List;

/**
* @author F43nd1r
Expand All @@ -16,5 +16,5 @@
public interface AttachmentUriProvider {

@NonNull
ArrayList<Uri> getAttachments(Context context, ACRAConfiguration configuration);
List<Uri> getAttachments(Context context, ACRAConfiguration configuration);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.acra.config.ACRAConfiguration;

import java.util.ArrayList;
import java.util.List;

import static org.acra.ACRA.LOG_TAG;

Expand All @@ -19,7 +20,7 @@
public class DefaultAttachmentProvider implements AttachmentUriProvider {
@NonNull
@Override
public ArrayList<Uri> getAttachments(Context context, ACRAConfiguration configuration) {
public List<Uri> getAttachments(Context context, ACRAConfiguration configuration) {
final ArrayList<Uri> result = new ArrayList<Uri>();
for (String s : configuration.attachmentUris()){
try {
Expand Down
13 changes: 2 additions & 11 deletions acra/src/main/java/org/acra/file/CrashReportPersister.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,16 @@

import org.acra.ACRAConstants;
import org.acra.collector.CrashReportData;
import org.acra.util.JsonUtils;
import org.acra.util.IOUtils;
import org.acra.util.JsonUtils;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;

/**
* Stores a crash reports data with {@link org.acra.ReportField} enum values as keys.
Expand Down Expand Up @@ -74,13 +72,6 @@ public CrashReportData load(@NonNull File file) throws IOException, JSONExceptio
* @throws java.io.IOException if the CrashReportData could not be written to the OutputStream.
*/
public void store(@NonNull CrashReportData crashData, @NonNull File file) throws IOException {

final OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file), ACRAConstants.UTF8);
try {
writer.write(crashData.toJSON().toString());
writer.flush();
} finally {
IOUtils.safeClose(writer);
}
IOUtils.writeStringToFile(file, crashData.toJSON().toString());
}
}
2 changes: 1 addition & 1 deletion acra/src/main/java/org/acra/http/HttpUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public static String getParamsAsFormString(@NonNull Map<?, ?> parameters) throws

public static String getFileNameFromUri(Context context, Uri uri) {
String result = null;
if (uri.getScheme().equals("content")) {
if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
final Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
try {
if (cursor != null && cursor.moveToFirst()) {
Expand Down
Loading

0 comments on commit de73a31

Please sign in to comment.