Skip to content

Commit e20bd75

Browse files
committed
added option to share realm file
1 parent 4149ea5 commit e20bd75

8 files changed

+84
-9
lines changed

realm-browser/src/main/AndroidManifest.xml

+15-5
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,36 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="de.jonasrottmann.realmbrowser">
3+
package="de.jonasrottmann.realmbrowser">
44

55
<application>
6+
<provider
7+
android:name="android.support.v4.content.FileProvider"
8+
android:authorities="de.jonasrottmann.realmbrowser"
9+
android:exported="false"
10+
android:grantUriPermissions="true">
11+
<meta-data
12+
android:name="android.support.FILE_PROVIDER_PATHS"
13+
android:resource="@xml/realm_browser_filepaths"/>
14+
</provider>
15+
616
<activity
717
android:name=".models.view.ModelsActivity"
818
android:label="@string/realm_browser_title"
9-
android:theme="@style/realm_browser_BaseTheme.Theme" />
19+
android:theme="@style/realm_browser_BaseTheme.Theme"/>
1020
<activity
1121
android:name=".object.view.RealmObjectActivity"
1222
android:label="@string/realm_browser_title"
1323
android:theme="@style/realm_browser_BaseTheme.Theme"
14-
android:windowSoftInputMode="adjustResize" />
24+
android:windowSoftInputMode="adjustResize"/>
1525
<activity
1626
android:name=".browser.view.RealmBrowserActivity"
1727
android:label="@string/realm_browser_title"
18-
android:theme="@style/realm_browser_BaseTheme.DrawerTheme" />
28+
android:theme="@style/realm_browser_BaseTheme.DrawerTheme"/>
1929

2030
<activity
2131
android:name=".files.view.FilesActivity"
2232
android:label="@string/realm_browser_title"
23-
android:theme="@style/realm_browser_BaseTheme.Theme" />
33+
android:theme="@style/realm_browser_BaseTheme.Theme"/>
2434

2535
</application>
2636

realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsContract.java

+8
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ interface View extends BaseView<Presenter> {
2828
void updateWithModels(@NonNull ArrayList<ModelPojo> filesList, @SortMode int sortMode);
2929

3030
Context getViewContext();
31+
32+
void presentShareDialog(@NonNull String path);
3133
}
3234

3335
interface Presenter extends BasePresenter<View> {
@@ -37,9 +39,13 @@ interface Presenter extends BasePresenter<View> {
3739

3840
void onSortModeChanged();
3941

42+
void onShareSelected();
43+
4044
void onFilterChanged(@NonNull String filter);
4145

4246
void updateWithModels(@NonNull ArrayList<ModelPojo> modelsList, @SortMode int sortMode);
47+
48+
void presentShareDialog(@NonNull String path);
4349
}
4450

4551
interface Interactor extends BaseInteractor {
@@ -48,5 +54,7 @@ interface Interactor extends BaseInteractor {
4854
void updateWithFilter(String filter);
4955

5056
void updateWithSortModeChanged();
57+
58+
void onShareSelected();
5159
}
5260
}

realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsInteractor.java

+5
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ public void updateWithSortModeChanged() {
4242
this.sortMode = (this.sortMode + 1) % 2;
4343
requestForContentUpdate();
4444
}
45+
46+
@Override
47+
public void onShareSelected() {
48+
getPresenter().presentShareDialog(RealmHolder.getInstance().getRealmConfiguration().getPath());
49+
}
4550
//endregion
4651

4752
//region Helper

realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/ModelsPresenter.java

+13
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ public void onModelSelected(ModelPojo item) {
4040
RealmBrowserActivity.start(getView().getViewContext(), item.getKlass());
4141
}
4242
}
43+
44+
@Override
45+
public void onShareSelected() {
46+
interactor.onShareSelected();
47+
}
4348
//endregion
4449

4550
//region InteractorOutput
@@ -50,5 +55,13 @@ public void updateWithModels(@NonNull ArrayList<ModelPojo> modelsList, @ModelsCo
5055
getView().updateWithModels(modelsList, sortMode);
5156
}
5257
}
58+
59+
@Override
60+
public void presentShareDialog(@NonNull String path) {
61+
if (isViewAttached()) {
62+
//noinspection ConstantConditions
63+
getView().presentShareDialog(path);
64+
}
65+
}
5366
//endregion
5467
}

realm-browser/src/main/java/de/jonasrottmann/realmbrowser/models/view/ModelsActivity.java

+20-1
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import android.content.Context;
44
import android.content.Intent;
5+
import android.net.Uri;
56
import android.os.Bundle;
67
import android.support.annotation.NonNull;
78
import android.support.annotation.Nullable;
89
import android.support.annotation.RestrictTo;
910
import android.support.v4.content.ContextCompat;
11+
import android.support.v4.content.FileProvider;
1012
import android.support.v4.widget.SwipeRefreshLayout;
1113
import android.support.v7.app.AppCompatActivity;
1214
import android.support.v7.widget.LinearLayoutManager;
@@ -16,11 +18,15 @@
1618
import android.view.Menu;
1719
import android.view.MenuInflater;
1820
import android.view.MenuItem;
21+
22+
import java.io.File;
23+
import java.util.ArrayList;
24+
1925
import de.jonasrottmann.realmbrowser.R;
26+
import de.jonasrottmann.realmbrowser.helper.RealmHolder;
2027
import de.jonasrottmann.realmbrowser.models.ModelsContract;
2128
import de.jonasrottmann.realmbrowser.models.ModelsPresenter;
2229
import de.jonasrottmann.realmbrowser.models.model.ModelPojo;
23-
import java.util.ArrayList;
2430

2531
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
2632
public class ModelsActivity extends AppCompatActivity implements ModelsContract.View, SearchView.OnQueryTextListener {
@@ -113,6 +119,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
113119
if (item.getItemId() == R.id.realm_browser_action_sort) {
114120
presenter.onSortModeChanged();
115121
return true;
122+
} else if (item.getItemId() == R.id.realm_browser_action_share) {
123+
presenter.onShareSelected();
124+
return true;
116125
} else {
117126
return super.onOptionsItemSelected(item);
118127
}
@@ -145,6 +154,16 @@ public void attachPresenter(@Nullable ModelsContract.Presenter presenter) {
145154
this.presenter.attachView(this);
146155
}
147156

157+
@Override
158+
public void presentShareDialog(@NonNull String path) {
159+
Uri contentUri = FileProvider.getUriForFile(this, "de.jonasrottmann.realmbrowser", new File(RealmHolder.getInstance().getRealmConfiguration().getPath()));
160+
Intent intentShareFile = new Intent(Intent.ACTION_SEND);
161+
intentShareFile.setType("application/*");
162+
intentShareFile.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
163+
intentShareFile.putExtra(Intent.EXTRA_STREAM, contentUri);
164+
startActivity(Intent.createChooser(intentShareFile, "Share Realm File"));
165+
}
166+
148167
@Override
149168
protected void onDestroy() {
150169
super.onDestroy();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportHeight="24"
5+
android:viewportWidth="24">
6+
<path
7+
android:fillColor="#fff"
8+
android:pathData="M21,11L14,4V8C7,9 4,14 3,19C5.5,15.5 9,13.9 14,13.9V18L21,11Z"/>
9+
</vector>
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<menu xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:app="http://schemas.android.com/apk/res-auto">
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
44

55
<item
66
android:id="@+id/realm_browser_action_filter"
77
android:icon="@drawable/realm_browser_ic_search_white_24dp"
88
android:title="@string/realm_browser_action_filter"
99
app:actionViewClass="android.support.v7.widget.SearchView"
10-
app:showAsAction="ifRoom" />
10+
app:showAsAction="ifRoom"/>
1111

1212
<item
1313
android:id="@+id/realm_browser_action_sort"
1414
android:icon="@drawable/realm_browser_ic_sort_ascending_white_24dp"
1515
android:title="Sort"
16-
app:showAsAction="always" />
16+
app:showAsAction="always"/>
17+
18+
<item
19+
android:id="@+id/realm_browser_action_share"
20+
android:icon="@drawable/realm_browser_ic_share_white_24dp"
21+
android:title="Share Realm File"
22+
app:showAsAction="always"/>
23+
1724
</menu>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<paths xmlns:android="http://schemas.android.com/apk/res/android">
3+
<files-path name="files" path="/"/>
4+
</paths>

0 commit comments

Comments
 (0)