Fixed file loading and app icon not showing up in app drawer
This commit is contained in:
parent
7a39fd947c
commit
90ae21724a
4 changed files with 48 additions and 47 deletions
|
@ -14,6 +14,8 @@
|
|||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"></action>
|
||||
<category android:name="android.intent.category.LAUNCHER"></category>
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.EDIT" />
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.wbrawner.simplemarkdown;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
@ -9,6 +8,7 @@ import android.net.Uri;
|
|||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.FileProvider;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
|
@ -21,11 +21,8 @@ import android.widget.EditText;
|
|||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
@ -36,12 +33,15 @@ import static android.content.ContentValues.TAG;
|
|||
public class EditFragment extends Fragment {
|
||||
public static final String SAVE_ACTION = "com.wbrawner.simplemarkdown.ACTION_SAVE";
|
||||
public static final String LOAD_ACTION = "com.wbrawner.simplemarkdown.ACTION_LOAD";
|
||||
private static EditText mMarkdownEditor;
|
||||
|
||||
@BindView(R.id.markdown_edit)
|
||||
EditText markdownEditor;
|
||||
|
||||
private Activity mContext;
|
||||
private Context mContext;
|
||||
|
||||
private File mTmpFile;
|
||||
private boolean loadTmpFile = true;
|
||||
|
||||
public EditFragment() {
|
||||
// Required empty public constructor
|
||||
|
@ -66,11 +66,12 @@ public class EditFragment extends Fragment {
|
|||
// Inflate the layout for this fragment
|
||||
View view = inflater.inflate(R.layout.fragment_edit, container, false);
|
||||
ButterKnife.bind(this, view);
|
||||
if (markdownEditor.requestFocus()) {
|
||||
mMarkdownEditor = markdownEditor;
|
||||
if (mMarkdownEditor.requestFocus()) {
|
||||
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
|
||||
}
|
||||
;
|
||||
markdownEditor.addTextChangedListener(new TextWatcher() {
|
||||
|
||||
mMarkdownEditor.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
|
||||
|
@ -78,7 +79,7 @@ public class EditFragment extends Fragment {
|
|||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
updatePreview(markdownEditor.getText());
|
||||
updatePreview(mMarkdownEditor.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -91,29 +92,14 @@ public class EditFragment extends Fragment {
|
|||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
BufferedReader reader = null;
|
||||
try {
|
||||
File tmpFile = new File(getActivity().getFilesDir() + MainActivity.getTempFileName());
|
||||
if (getActivity().getIntent().getAction().equals(Intent.ACTION_MAIN)) {
|
||||
File tmpFile = new File(getActivity().getFilesDir() + "/" + MainActivity.getTempFileName());
|
||||
if (tmpFile.exists()) {
|
||||
InputStream in = new FileInputStream(tmpFile);
|
||||
reader = new BufferedReader(new InputStreamReader(in));
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
markdownEditor.append(line);
|
||||
markdownEditor.append("\r\n");
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Error reading temp file: ", e);
|
||||
} finally {
|
||||
if (reader != null) {
|
||||
try {
|
||||
reader.close();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
FileLoadTask loadTask = new FileLoadTask(mContext, EditFragment.this);
|
||||
loadTask.execute(FileProvider.getUriForFile(mContext, MainActivity.AUTHORITY, tmpFile));
|
||||
}
|
||||
}
|
||||
updatePreview(markdownEditor.getText());
|
||||
updatePreview(mMarkdownEditor.getText());
|
||||
}
|
||||
|
||||
private void updatePreview(Editable data) {
|
||||
|
@ -124,6 +110,7 @@ public class EditFragment extends Fragment {
|
|||
}
|
||||
|
||||
public void save(String data, String filePath) {
|
||||
// TODO: move this to AsyncTask
|
||||
if (filePath == null)
|
||||
filePath = MainActivity.getFilePath() + MainActivity.getFileName();
|
||||
FileOutputStream out = null;
|
||||
|
@ -153,11 +140,14 @@ public class EditFragment extends Fragment {
|
|||
|
||||
@Override
|
||||
public void onPause() {
|
||||
save(markdownEditor.getText().toString(),
|
||||
save(mMarkdownEditor.getText().toString(),
|
||||
MainActivity.getTempFilePath() + MainActivity.getFileName());
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
public void setEditorText(String s) {
|
||||
mMarkdownEditor.setText(s);
|
||||
}
|
||||
|
||||
private class MarkdownBroadcastSaveReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
|
@ -167,20 +157,16 @@ public class EditFragment extends Fragment {
|
|||
case SAVE_ACTION:
|
||||
if (intent.hasExtra("fileName")) {
|
||||
String fileName = intent.getStringExtra("fileName");
|
||||
save(markdownEditor.getText().toString(), fileName);
|
||||
save(mMarkdownEditor.getText().toString(), fileName);
|
||||
}
|
||||
break;
|
||||
case LOAD_ACTION:
|
||||
if (intent.hasExtra("fileUri")) {
|
||||
load(Uri.parse(intent.getStringExtra("fileUri")));
|
||||
FileLoadTask loadTask = new FileLoadTask(mContext, EditFragment.this);
|
||||
loadTask.execute(Uri.parse(intent.getStringExtra("fileUri")));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void load(Uri fileUri) {
|
||||
FileLoadTask loadTask = new FileLoadTask(mContext, markdownEditor);
|
||||
loadTask.execute(fileUri);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ import android.util.Log;
|
|||
import android.widget.EditText;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
|
@ -16,32 +18,37 @@ import static android.content.ContentValues.TAG;
|
|||
* Created by billy on 7/25/17.
|
||||
*/
|
||||
|
||||
public class FileLoadTask extends AsyncTask<Uri, Void, String> {
|
||||
public class FileLoadTask extends AsyncTask<Uri, String, String> {
|
||||
|
||||
private Context mContext;
|
||||
private EditText mMarkdownEditor;
|
||||
private EditFragment mEditFragment;
|
||||
|
||||
public FileLoadTask(Context context, EditText markdownEditor) {
|
||||
public FileLoadTask(Context context, EditFragment editFragment) {
|
||||
mContext = context;
|
||||
mMarkdownEditor = markdownEditor;
|
||||
mEditFragment = editFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String doInBackground(Uri... uris) {
|
||||
if (mContext == null) {
|
||||
Log.d(TAG, "No context, abort");
|
||||
return null;
|
||||
}
|
||||
Log.d(TAG, "Begin loading file");
|
||||
BufferedReader reader = null;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
FileOutputStream out = null;
|
||||
try {
|
||||
InputStream in = mContext.getContentResolver().openInputStream(uris[0]);
|
||||
File tmpFile = new File(mContext.getFilesDir() + "/" + MainActivity.getTempFileName());
|
||||
if (tmpFile.exists())
|
||||
tmpFile.delete();
|
||||
out = new FileOutputStream(tmpFile);
|
||||
reader = new BufferedReader(new InputStreamReader(in));
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
sb.append(line);
|
||||
sb.append("\r\n");
|
||||
out.write(line.getBytes());
|
||||
out.write("\r\n".getBytes());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Error opening file:", e);
|
||||
|
@ -52,13 +59,18 @@ public class FileLoadTask extends AsyncTask<Uri, Void, String> {
|
|||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
if (out != null) {
|
||||
try {
|
||||
out.close();
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(String s) {
|
||||
mMarkdownEditor.setText(s);
|
||||
super.onPostExecute(s);
|
||||
mEditFragment.setEditorText(s);
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package com.wbrawner.simplemarkdown;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.ClipData;
|
||||
import android.content.DialogInterface;
|
||||
|
@ -34,7 +35,7 @@ import butterknife.ButterKnife;
|
|||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
private static final String AUTHORITY = "com.wbrawner.simplemarkdown.fileprovider";
|
||||
public static final String AUTHORITY = "com.wbrawner.simplemarkdown.fileprovider";
|
||||
private static final int REQUEST_WRITE_STORAGE = 0;
|
||||
private static File mFilesDir;
|
||||
@BindView(R.id.pager) ViewPager pager;
|
||||
|
@ -77,7 +78,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
mFilesDir = getFilesDir();
|
||||
checkDirectories();
|
||||
Intent intent = getIntent();
|
||||
if (intent != null && intent.getData() != null) {
|
||||
if (intent != null && !intent.getAction().equals(Intent.ACTION_MAIN) && intent.getData() != null) {
|
||||
Intent loadIntent = new Intent(EditFragment.LOAD_ACTION);
|
||||
loadIntent.putExtra("fileUri", intent.getData().toString());
|
||||
LocalBroadcastManager.getInstance(getApplicationContext())
|
||||
|
|
Loading…
Reference in a new issue