-
Notifications
You must be signed in to change notification settings - Fork 15
/
MainActivity.java
119 lines (97 loc) · 4.1 KB
/
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_PICK = 1;
private static final String API_KEY = "";
private static final String APP_SECRET = "";
private static final Policy policy = new Policy.Builder().giveFullAccess().build();
private static final Security security = Security.createNew(policy, APP_SECRET);
private static final FilestackClient client = new FilestackClient(API_KEY, security);
private TextView textView;
private String handle;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_PICK && resultCode == RESULT_OK) {
Uri uri = data.getData();
uploadFile(uri);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
textView = (TextView) findViewById(R.id.text);
}
private String getPathFromMediaUri(Context context, Uri uri) {
Cursor cursor = null;
try {
String[] projection = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(uri, projection, null, null, null);
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(columnIndex);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
public void onClickDelete(View view) {
textView.append("DELETING " + handle + " START\n");
FileLink fileLink = new FileLink(API_KEY, handle, security);
fileLink.deleteAsync()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onComplete() {
textView.append("DELETING " + handle + " FINISHED\n");
}
@Override
public void onError(@NonNull Throwable e) {
textView.append("DELETING " + handle + " ERROR\n");
}
});
}
public void onClickUpload(View view) {
textView.append("UPLOAD START\n");
Intent mediaPickerIntent = new Intent(Intent.ACTION_PICK);
mediaPickerIntent.setType("*/*");
if (mediaPickerIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(mediaPickerIntent, REQUEST_PICK);
} else {
textView.append("UPLOAD ERROR\n");
}
}
private void uploadFile(Uri uri) {
final Context context = getApplicationContext();
String path = getPathFromMediaUri(context, uri);
client.uploadAsync(path)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<FileLink>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onSuccess(@NonNull FileLink fileLink) {
handle = fileLink.getHandle();
String url = "https://cdn.filestackcontent.com/"
+ handle
+ "?policy=" + security.getPolicy()
+ "&signature=" + security.getSignature();
textView.append(url + "\n");
textView.append("UPLOAD FINISHED\n");
}
@Override
public void onError(@NonNull Throwable e) {
e.printStackTrace();
textView.append("UPLOAD ERROR\n");
}
});
}
}