From de66e423f0f097c980c01e26e3f4f79cced0ea2a Mon Sep 17 00:00:00 2001 From: Paul T Date: Sun, 6 Dec 2015 11:19:36 -0500 Subject: [PATCH] Localized strings. Added proper permission handling for Android marshmellow. --- .idea/libraries/MaterialLibrary_1_0_4.xml | 6 +- FPlib/FPlib.iml | 1 + .../devpaul/filepickerlibrary/FilePicker.java | 114 ++++++++++++++--- .../filepickerlibrary/FilePickerActivity.java | 115 +++++++++++++++--- .../adapter/FileListAdapter.java | 15 ++- .../adapter/FileRecyclerViewAdapter.java | 22 ++-- FPlib/src/main/res/values/strings.xml | 17 +++ app/app.iml | 10 ++ app/build.gradle | 1 + .../com/devpaul/filepicker/MainActivity.java | 12 +- app/src/main/res/layout/fragment_main.xml | 29 +++-- app/src/main/res/values/strings.xml | 7 +- 12 files changed, 271 insertions(+), 78 deletions(-) diff --git a/.idea/libraries/MaterialLibrary_1_0_4.xml b/.idea/libraries/MaterialLibrary_1_0_4.xml index 436bb97..51996a8 100644 --- a/.idea/libraries/MaterialLibrary_1_0_4.xml +++ b/.idea/libraries/MaterialLibrary_1_0_4.xml @@ -1,11 +1,11 @@ - + - - + + diff --git a/FPlib/FPlib.iml b/FPlib/FPlib.iml index 22b9c4f..f7efe94 100755 --- a/FPlib/FPlib.iml +++ b/FPlib/FPlib.iml @@ -72,6 +72,7 @@ + diff --git a/FPlib/src/main/java/com/devpaul/filepickerlibrary/FilePicker.java b/FPlib/src/main/java/com/devpaul/filepickerlibrary/FilePicker.java index ccf5c61..25701d1 100644 --- a/FPlib/src/main/java/com/devpaul/filepickerlibrary/FilePicker.java +++ b/FPlib/src/main/java/com/devpaul/filepickerlibrary/FilePicker.java @@ -1,18 +1,22 @@ package com.devpaul.filepickerlibrary; +import android.Manifest; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.os.Environment; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; -import android.util.Log; import android.view.MenuItem; import android.view.View; import android.view.ViewTreeObserver; @@ -24,6 +28,7 @@ import android.widget.LinearLayout; import android.widget.RelativeLayout; +import com.afollestad.materialdialogs.MaterialDialog; import com.devpaul.filepickerlibrary.adapter.FileRecyclerViewAdapter; import com.devpaul.filepickerlibrary.enums.FileScopeType; import com.devpaul.filepickerlibrary.enums.FileType; @@ -230,7 +235,14 @@ public class FilePicker extends AppCompatActivity implements NameFileDialogInter */ private Context mContext; + /** + * Request code for app permissions. + */ + private static final int REQUEST_FOR_READ_EXTERNAL_STORAGE = 101; + /** + * Layout manager for the Recycler View. + */ private LinearLayoutManager mLinearLayoutManager; @Override @@ -306,8 +318,7 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) { if (Math.abs(dy) >= 5) { if (dy > 0) { toggleButton(false); - } - else if(dy < 0) { + } else if (dy < 0) { toggleButton(true); } if (areButtonsShowing) { @@ -318,8 +329,7 @@ else if(dy < 0) { hideButtons(); adapter.setSelectedPosition(-1); } - } - else { + } else { mLastFirstVisibleItem = firstVisibleItem; } super.onScrolled(recyclerView, dx, dy); @@ -332,23 +342,83 @@ else if(dy < 0) { //drawable has not been set so set the color. setHeaderBackground(colorId, drawableId); + //check for proper permissions. + if(Build.VERSION.SDK_INT == Build.VERSION_CODES.M) { + int permissionCheck = ContextCompat.checkSelfPermission(this, + Manifest.permission.READ_EXTERNAL_STORAGE); + if(permissionCheck != PackageManager.PERMISSION_GRANTED) { + if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { + //Show permission rationale. + new MaterialDialog.Builder(FilePicker.this) + .title(R.string.file_picker_permission_rationale_dialog_title) + .content(R.string.file_picker_permission_rationale_dialog_content) + .positiveText(R.string.file_picker_ok) + .negativeText(R.string.file_picker_cancel) + .callback(new MaterialDialog.ButtonCallback() { + @Override + public void onPositive(MaterialDialog dialog) { + ActivityCompat.requestPermissions(FilePicker.this, + new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE}, + REQUEST_FOR_READ_EXTERNAL_STORAGE); + } + + @Override + public void onNegative(MaterialDialog dialog) { + setResult(RESULT_CANCELED); + finish(); + } + }) + .show(); + } + else { + ActivityCompat.requestPermissions(this, + new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE}, + REQUEST_FOR_READ_EXTERNAL_STORAGE); + } + } + } else { + init(); + } + } + + /** + * Initialize the current directory. + */ + private void init() { curDirectory = new File(Environment.getExternalStorageDirectory().getPath()); currentFile = new File(curDirectory.getPath()); lastDirectory = curDirectory.getParentFile(); if (curDirectory.isDirectory()) { - Log.d("FILEPICKER", "Is directory"); new UpdateFilesTask(this).execute(curDirectory); } else { - Log.d("FILEPICKER", "Is not directory"); try { - throw new Exception("Initial file must be a directory."); + throw new Exception(getString(R.string.file_picker_directory_error)); } catch (Exception e) { e.printStackTrace(); } } } + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + switch (requestCode) { + //see if we got the permission. + case REQUEST_FOR_READ_EXTERNAL_STORAGE: + if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED + && grantResults[1] == PackageManager.PERMISSION_GRANTED) { + init(); + } + else { + setResult(RESULT_CANCELED); + finish(); + } + return; + } + } + private static OvershootInterpolator interpolator = new OvershootInterpolator(); /** * Toggles the material floating action button. @@ -415,7 +485,7 @@ public void onClick(View view) { finish(); } else { SnackbarManager.show(Snackbar.with(FilePicker.this) - .text("Please select a directory.") + .text(R.string.file_picker_snackbar_select_directory_message) .duration(1500)); } } else { //request code is for a file @@ -433,7 +503,8 @@ public void onClick(View view) { finish(); } else { SnackbarManager.show(Snackbar.with(FilePicker.this) - .text("Please select a " + requiredExtension + " file.") + .text(String.format(getString(R.string.file_picker_snackbar_select_file_ext_message), + requiredExtension)) .duration(1500)); } } else { @@ -465,11 +536,11 @@ public void onClick(View view) { startActivity(newIntent); } catch (android.content.ActivityNotFoundException e) { SnackbarManager.show(Snackbar.with(FilePicker.this) - .text("No handler for this type of file.")); + .text(R.string.file_picker_snackbar_no_file_type_handler)); } } else { SnackbarManager.show(Snackbar.with(FilePicker.this) - .text("Couldn't get file type.")); + .text(R.string.file_picker_snackbar_no_read_type)); } } @@ -556,7 +627,7 @@ public void onReturnFileName(String fileName) { if (fileName.equalsIgnoreCase("") || fileName.isEmpty()) { fileName = null; } - if (fileName != null) { + if (fileName != null && curDirectory != null) { File file = new File(curDirectory.getPath() + "//" + fileName); boolean created = false; if (!file.exists()) { @@ -613,9 +684,8 @@ private UpdateFilesTask(Context context) { @Override protected void onPreExecute() { - Log.i("FilePicker", "AsyncCalled"); dialog = new ProgressDialog(mContext); - dialog.setMessage("Loading..."); + dialog.setMessage(getString(R.string.file_picker_progress_dialog_loading)); dialog.setCancelable(false); dialog.show(); hideButtons(); @@ -635,7 +705,7 @@ protected void onPostExecute(File[] localFiles) { files = localFiles; if (directory.getPath().equalsIgnoreCase(Environment .getExternalStorageDirectory().getPath())) { - toolbar.setTitle("Parent Directory"); + toolbar.setTitle(getString(R.string.file_picker_default_directory_title)); } else { toolbar.setTitle(directory.getName()); @@ -647,9 +717,15 @@ protected void onPostExecute(File[] localFiles) { // for(int i = 0; i < files.length; i++) { // adapter.addFile(files[i]); // } - adapter = new FileRecyclerViewAdapter(FilePicker.this, files, scopeType, callback); - //TODO: Fix this, figure out how to add and remove the header. - recyclerView.setAdapter(adapter); + if(files != null) { + adapter = new FileRecyclerViewAdapter(FilePicker.this, files, scopeType, callback); + //TODO: Fix this, figure out how to add and remove the header. + recyclerView.setAdapter(adapter); + } + //make sure the button is showing. + if(!isFabShowing) { + toggleButton(true); + } if (dialog.isShowing()) { dialog.dismiss(); } diff --git a/FPlib/src/main/java/com/devpaul/filepickerlibrary/FilePickerActivity.java b/FPlib/src/main/java/com/devpaul/filepickerlibrary/FilePickerActivity.java index 4586fbd..6d3b4cb 100755 --- a/FPlib/src/main/java/com/devpaul/filepickerlibrary/FilePickerActivity.java +++ b/FPlib/src/main/java/com/devpaul/filepickerlibrary/FilePickerActivity.java @@ -16,16 +16,20 @@ package com.devpaul.filepickerlibrary; +import android.Manifest; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.content.res.Resources; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.os.Environment; -import android.util.Log; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; import android.view.MenuItem; import android.view.View; import android.view.animation.Animation; @@ -38,6 +42,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; +import com.afollestad.materialdialogs.MaterialDialog; import com.devpaul.filepickerlibrary.adapter.FileListAdapter; import com.devpaul.filepickerlibrary.enums.FileScopeType; import com.devpaul.filepickerlibrary.enums.FileType; @@ -240,6 +245,14 @@ public class FilePickerActivity extends ListActivity implements NameFileDialogIn */ private Context mContext; + /** + * Request code for app permissions. + */ + private static final int REQUEST_FOR_READ_EXTERNAL_STORAGE = 107; + + /** + * Holder for the list header view. + */ private View listHeaderView; @Override @@ -329,6 +342,49 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun //drawable has not been set so set the color. setHeaderBackground(colorId, drawableId); + //check for proper permissions. + if(Build.VERSION.SDK_INT == Build.VERSION_CODES.M) { + int permissionCheck = ContextCompat.checkSelfPermission(this, + Manifest.permission.READ_EXTERNAL_STORAGE); + if(permissionCheck != PackageManager.PERMISSION_GRANTED) { + if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { + //Show permission rationale. + new MaterialDialog.Builder(FilePickerActivity.this) + .title(R.string.file_picker_permission_rationale_dialog_title) + .content(R.string.file_picker_permission_rationale_dialog_content) + .positiveText(R.string.file_picker_ok) + .negativeText(R.string.file_picker_cancel) + .callback(new MaterialDialog.ButtonCallback() { + @Override + public void onPositive(MaterialDialog dialog) { + ActivityCompat.requestPermissions(FilePickerActivity.this, + new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE}, + REQUEST_FOR_READ_EXTERNAL_STORAGE); + } + + @Override + public void onNegative(MaterialDialog dialog) { + setResult(RESULT_CANCELED); + finish(); + } + }) + .show(); + } + else { + ActivityCompat.requestPermissions(this, + new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE}, + REQUEST_FOR_READ_EXTERNAL_STORAGE); + } + } + } else { + init(); + } + } + + private void init() { + curDirectory = new File(Environment.getExternalStorageDirectory().getPath()); currentFile = new File(curDirectory.getPath()); lastDirectory = curDirectory.getParentFile(); @@ -337,13 +393,32 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun new UpdateFilesTask(this).execute(curDirectory); } else { try { - throw new Exception("Initial file must be a directory."); + throw new Exception(getString(R.string.file_picker_directory_error)); } catch (Exception e) { e.printStackTrace(); } } } + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + + switch (requestCode) { + case REQUEST_FOR_READ_EXTERNAL_STORAGE: + if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && + grantResults[1] == PackageManager.PERMISSION_GRANTED) { + //permission granted. + init(); + } + else { + setResult(RESULT_CANCELED); + finish(); + } + return; + + } + } + @Override public void onBackPressed() { if (lastDirectory != null && !curDirectory.getPath() @@ -385,7 +460,7 @@ public void onClick(View view) { finish(); } else { SnackbarManager.show(Snackbar.with(FilePickerActivity.this) - .text("Please select a directory.") + .text(R.string.file_picker_snackbar_select_directory_message) .duration(1500)); } } else { //request code is for a file @@ -403,7 +478,8 @@ public void onClick(View view) { finish(); } else { SnackbarManager.show(Snackbar.with(FilePickerActivity.this) - .text("Please select a " + requiredExtension + " file.") + .text(String.format(getString(R.string.file_picker_snackbar_select_file_ext_message), + requiredExtension)) .duration(1500)); } } else { @@ -436,11 +512,11 @@ public void onClick(View view) { startActivity(newIntent); } catch (android.content.ActivityNotFoundException e) { SnackbarManager.show(Snackbar.with(FilePickerActivity.this) - .text("No handler for this type of file.")); + .text(R.string.file_picker_snackbar_no_file_type_handler)); } } else { SnackbarManager.show(Snackbar.with(FilePickerActivity.this) - .text("Couldn't get file type.")); + .text(R.string.file_picker_snackbar_no_read_type)); } } @@ -546,7 +622,7 @@ public void onReturnFileName(String fileName) { if (fileName.equalsIgnoreCase("") || fileName.isEmpty()) { fileName = null; } - if (fileName != null) { + if (fileName != null && curDirectory != null) { File file = new File(curDirectory.getPath() + "//" + fileName); boolean created = false; if (!file.exists()) { @@ -618,9 +694,8 @@ private UpdateFilesTask(Context context) { @Override protected void onPreExecute() { - Log.i("FilePicker", "AsyncCalled"); dialog = new ProgressDialog(mContext); - dialog.setMessage("Loading..."); + dialog.setMessage(getString(R.string.file_picker_progress_dialog_loading)); dialog.setCancelable(false); dialog.show(); hideButtons(); @@ -640,22 +715,26 @@ protected void onPostExecute(File[] localFiles) { files = localFiles; if (directory.getPath().equalsIgnoreCase(Environment .getExternalStorageDirectory().getPath())) { - directoryTitle.setText("Parent Directory"); + directoryTitle.setText(R.string.file_picker_default_directory_title); } else { directoryTitle.setText(directory.getName()); } lastDirectory = directory.getParentFile(); curDirectory = directory; - if (directory.listFiles().length > 0 && directoryExists(files) - && listView.getHeaderViewsCount() == 0) { - listView.addHeaderView(listHeaderView); - } else if (directory.listFiles().length == 0 || !directoryExists(files)) { - if (listView.getHeaderViewsCount() == 1) { - listView.removeHeaderView(listHeaderView); + if(directory.listFiles() != null) { + if (directory.listFiles().length > 0 && directoryExists(files) + && listView.getHeaderViewsCount() == 0) { + listView.addHeaderView(listHeaderView); + } else if (directory.listFiles().length == 0 || !directoryExists(files)) { + if (listView.getHeaderViewsCount() == 1) { + listView.removeHeaderView(listHeaderView); + } } } - adapter = new FileListAdapter(FilePickerActivity.this, files, scopeType); - FilePickerActivity.this.setListAdapter(adapter); + if(files != null) { + adapter = new FileListAdapter(FilePickerActivity.this, files, scopeType); + FilePickerActivity.this.setListAdapter(adapter); + } if (dialog.isShowing()) { dialog.dismiss(); } diff --git a/FPlib/src/main/java/com/devpaul/filepickerlibrary/adapter/FileListAdapter.java b/FPlib/src/main/java/com/devpaul/filepickerlibrary/adapter/FileListAdapter.java index a3f95fb..488a71c 100755 --- a/FPlib/src/main/java/com/devpaul/filepickerlibrary/adapter/FileListAdapter.java +++ b/FPlib/src/main/java/com/devpaul/filepickerlibrary/adapter/FileListAdapter.java @@ -22,7 +22,6 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.os.AsyncTask; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -78,7 +77,6 @@ public FileListAdapter(Context context, File[] fileArray, FileScopeType type) { for(int i = 0; i < fileList.size(); i++) { String extension = fileExt(fileList.get(i).getPath()); if(extension != null) { - Log.d("FILELISTADAPTER", "Ext: " + extension); fileList.remove(i); } } @@ -145,16 +143,17 @@ public void onClick(View v) { TextView filePath = (TextView) customView.findViewById(R.id.file_info_path); File file = fileList.get(position); if(!file.isDirectory()) { - fileSize.setText("Size: " + file.length() + " bytes"); + fileSize.setText(String.format( + mContext.getString(R.string.file_picker_adapter_size_string),file.length())); } Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(file.lastModified()); DateFormat df = SimpleDateFormat.getDateInstance(); - fileDate.setText("Last Modified: " + df.format(cal.getTime())); - filePath.setText("Path: " + file.getAbsolutePath()); + fileDate.setText(String.format(mContext.getString(R.string.file_picker_adapter_last_modified_string), df.format(cal.getTime()))); + filePath.setText(String.format(mContext.getString(R.string.file_picker_adapter_file_path_string), file.getAbsolutePath())); new MaterialDialog.Builder(v.getContext()) - .title("File: " + fileList.get(position).getName()) - .customView(customView, true) + .title(String.format(mContext.getString(R.string.file_picker_file_info_dialog_file_path), fileList.get(position).getName())) + .customView(customView, true) .show(); } }); @@ -162,7 +161,7 @@ public void onClick(View v) { if (mFileType == FileScopeType.ALL) { viewHolder.fileTitle.setText(fileList.get(i).getName()); if(!fileList.get(i).isDirectory()) { - viewHolder.fileInfo.setText("" + fileList.get(i).length() + " bytes"); + viewHolder.fileInfo.setText(String.format(mContext.getString(R.string.file_picker_adapter_file_size_only_string), fileList.get(i).length())); } String fileExt = fileExt(fileList.get(i).toString()); if(fileList.get(i).isDirectory()) { diff --git a/FPlib/src/main/java/com/devpaul/filepickerlibrary/adapter/FileRecyclerViewAdapter.java b/FPlib/src/main/java/com/devpaul/filepickerlibrary/adapter/FileRecyclerViewAdapter.java index 75d425c..2620b05 100644 --- a/FPlib/src/main/java/com/devpaul/filepickerlibrary/adapter/FileRecyclerViewAdapter.java +++ b/FPlib/src/main/java/com/devpaul/filepickerlibrary/adapter/FileRecyclerViewAdapter.java @@ -7,7 +7,6 @@ import android.graphics.drawable.LayerDrawable; import android.os.AsyncTask; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -31,6 +30,8 @@ /** * Created by Paul on 10/3/2015. + * + * Recycler adapter for the recycler view in the Material Design File Picker activity. */ public class FileRecyclerViewAdapter extends RecyclerView.Adapter { @@ -101,7 +102,6 @@ public FileRecyclerViewAdapter(Context context, File[] files, FileScopeType scop for(int i = 0; i < fileList.size(); i++) { String extension = fileExt(fileList.get(i).getPath()); if(extension != null) { - Log.d("FILELISTADAPTER", "Ext: " + extension); fileList.remove(i); } } @@ -132,7 +132,7 @@ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType return new FileHeaderViewHolder(v); } - throw new RuntimeException("No type that matches that type."); + throw new RuntimeException(context.getString(R.string.file_picker_recycler_adapter_view_holder_type_error)); } @@ -164,17 +164,20 @@ public void onClick(View v) { TextView filePath = (TextView) customView.findViewById(R.id.file_info_path); File file = fileList.get(i); if (!file.isDirectory()) { - fileSize.setText("Size: " + file.length() + " bytes"); + fileSize.setText(String.format(context.getString(R.string.file_picker_adapter_size_string), file.length())); } else { - new GetFileSizeTask(fileSize, file, "Size: %d bytes").execute(); + new GetFileSizeTask(fileSize, file, context.getString(R.string.file_picker_adapter_size_string)).execute(); } Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(file.lastModified()); DateFormat df = SimpleDateFormat.getDateInstance(); - fileDate.setText("Last Modified: " + df.format(cal.getTime())); - filePath.setText("Path: " + file.getAbsolutePath()); + fileDate.setText(String.format(context.getString(R.string.file_picker_adapter_last_modified_string), + df.format(cal.getTime()))); + filePath.setText(String.format(context.getString(R.string.file_picker_adapter_file_path_string), + file.getAbsolutePath())); new MaterialDialog.Builder(v.getContext()) - .title("File: " + fileList.get(i).getName()) + .title(String.format(context.getString(R.string.file_picker_file_info_dialog_file_path), + fileList.get(i).getName())) .customView(customView, true) .theme(Theme.LIGHT) .show(); @@ -184,7 +187,8 @@ public void onClick(View v) { if (mFileType == FileScopeType.ALL) { viewHolder.fileTitle.setText(fileList.get(i).getName()); if(!fileList.get(i).isDirectory()) { - viewHolder.fileInfo.setText("" + fileList.get(i).length() + " bytes"); + viewHolder.fileInfo.setText(String.format(context.getString(R.string.file_picker_adapter_file_size_only_string), + fileList.get(i).length())); } String fileExt = fileExt(fileList.get(i).toString()); if(fileList.get(i).isDirectory()) { diff --git a/FPlib/src/main/res/values/strings.xml b/FPlib/src/main/res/values/strings.xml index 5042e2e..81a3a88 100644 --- a/FPlib/src/main/res/values/strings.xml +++ b/FPlib/src/main/res/values/strings.xml @@ -1,4 +1,21 @@ FilePickerLibrary + Read/Write Storage Permission + The read/write storage permission is needed to access and read the files on your phone to display them to you + OK + Cancel + Initial file must be a directory. + Please select a directory. + Please select a %s file + No handler for this type of file. + Couldn\'t get file type. + Loading… + Parent Directory + Size: %d bytes + Last Modified: %s + Path: %s + %d bytes + File: %s + No type that matches that type. diff --git a/app/app.iml b/app/app.iml index 9d9a797..5fef644 100755 --- a/app/app.iml +++ b/app/app.iml @@ -71,6 +71,11 @@ + + + + + @@ -88,6 +93,11 @@ + + + + + diff --git a/app/build.gradle b/app/build.gradle index 4fae131..1a310c2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,4 +30,5 @@ dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') // compile 'com.github.DeveloperPaul123:FilePickerLibrary:2.0.1' compile project(":FPlib") + compile 'com.github.DeveloperPaul123:MaterialLibrary:1.0.5' } diff --git a/app/src/main/java/com/devpaul/filepicker/MainActivity.java b/app/src/main/java/com/devpaul/filepicker/MainActivity.java index db5df5d..0918e47 100644 --- a/app/src/main/java/com/devpaul/filepicker/MainActivity.java +++ b/app/src/main/java/com/devpaul/filepicker/MainActivity.java @@ -25,7 +25,6 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.Button; import android.widget.Toast; import com.devpaul.filepickerlibrary.FilePicker; @@ -34,6 +33,7 @@ import com.devpaul.filepickerlibrary.enums.FileScopeType; import com.devpaul.filepickerlibrary.enums.FileType; import com.devpaul.filepickerlibrary.enums.ThemeType; +import com.devpaul.materiallibrary.views.MaterialFlatButton; public class MainActivity extends Activity { @@ -82,7 +82,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); - Button filePickerActivity = (Button) rootView.findViewById(R.id.file_picker_activity); + MaterialFlatButton filePickerActivity = (MaterialFlatButton) rootView.findViewById(R.id.file_picker_activity); filePickerActivity.setOnClickListener(new View.OnClickListener() { @Override @@ -95,7 +95,7 @@ public void onClick(View view) { } }); - Button filePickerForFile = (Button) rootView.findViewById(R.id.file_picker_return_file_path); + MaterialFlatButton filePickerForFile = (MaterialFlatButton) rootView.findViewById(R.id.file_picker_return_file_path); filePickerForFile.setOnClickListener(new View.OnClickListener() { @Override @@ -108,7 +108,7 @@ public void onClick(View view) { } }); - Button filePickerDialog = (Button) rootView.findViewById(R.id.file_picker_dialog); + MaterialFlatButton filePickerDialog = (MaterialFlatButton) rootView.findViewById(R.id.file_picker_dialog); filePickerDialog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -119,7 +119,7 @@ public void onClick(View view) { } }); - Button filePickerMimePng = (Button) rootView.findViewById(R.id.file_picker_mime_png); + MaterialFlatButton filePickerMimePng = (MaterialFlatButton) rootView.findViewById(R.id.file_picker_mime_png); filePickerMimePng.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -132,7 +132,7 @@ public void onClick(View view) { } }); - Button newFilePicker = (Button) rootView.findViewById(R.id.new_file_picker_activity); + MaterialFlatButton newFilePicker = (MaterialFlatButton) rootView.findViewById(R.id.new_file_picker_activity); newFilePicker.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 1bbd366..74b0cc6 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -2,6 +2,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + xmlns:app="http://schemas.android.com/apk/res-auto" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" @@ -9,41 +10,47 @@ android:gravity="center" tools:context=".MainActivity$PlaceholderFragment"> -