Download kann nun ausgewählt werden ob Datei erneut herunter geladen werden soll, wenn bereits vorhanden.

Es wird nun ein Fehler angezeigt wenn der Download fehl schlug.
Wenn die App keine schreibrechte hat, fragt sie nach welchen.
Ordner von Modulename zu FU-Modulename umbenant
This commit is contained in:
Joshua
2018-10-12 18:20:07 +02:00
parent 59027b59fe
commit 34a104a8a3
5 changed files with 107 additions and 38 deletions

View File

@@ -1,12 +1,15 @@
package de.sebse.fuplanner.fragments.moddetails; package de.sebse.fuplanner.fragments.moddetails;
import android.Manifest;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
@@ -92,20 +95,44 @@ public class ModDetailResourceFragment extends Fragment {
// if (!node.isExpand()) // if (!node.isExpand())
// adapter.collapseBrotherNode(node); // adapter.collapseBrotherNode(node);
} else { } else {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext()); KVV kvv = ((MainActivity) getActivity()).getKVV();
Resource.File file = (Resource.File) node.getContent(); kvv.getModule(mItemPos, (Modules.Module module) -> {
alertDialogBuilder AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext());
.setTitle(file.getTitle()) Resource.File file = (Resource.File) node.getContent();
.setMessage( String ordnername = "FU-"+module.title;
getResources().getString(R.string.creator_name, file.getAuthor()) + "\n" + File f = new File(Environment.getExternalStoragePublicDirectory(
getResources().getString(R.string.last_modified_on, UtilsDate.getModifiedDateTime(context, file.getModifiedDate())) Environment.DIRECTORY_DOWNLOADS)+"/"+ordnername+"/"+file.getTitle());
) if (f.exists()) {//prüffen ob bereits herunter geladen
.setCancelable(true) alertDialogBuilder
.setNeutralButton(R.string.close, (dialog, id) -> dialog.cancel()) .setTitle(file.getTitle())
.setPositiveButton(R.string.download, (dialog, id) -> download(file)); .setMessage(
getResources().getString(R.string.creator_name, file.getAuthor()) + "\n" +
getResources().getString(R.string.last_modified_on, UtilsDate.getModifiedDateTime(context, file.getModifiedDate()))
)
.setCancelable(true)
.setNeutralButton(R.string.close, (dialog, id) -> dialog.cancel())
.setNegativeButton(R.string.openFile, (dialog, id) -> download(file, ordnername, false))
.setPositiveButton(R.string.download, (dialog, id) -> download(file, ordnername, true));
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
else {
alertDialogBuilder
.setTitle(file.getTitle())
.setMessage(
getResources().getString(R.string.creator_name, file.getAuthor()) + "\n" +
getResources().getString(R.string.last_modified_on, UtilsDate.getModifiedDateTime(context, file.getModifiedDate()))
)
.setCancelable(true)
.setNeutralButton(R.string.close, (dialog, id) -> dialog.cancel())
.setPositiveButton(R.string.download, (dialog, id) -> download(file, ordnername, true));
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
AlertDialog alertDialog = alertDialogBuilder.create(); }, error -> {
alertDialog.show(); log.e(error);
});
} }
return false; return false;
} }
@@ -131,27 +158,55 @@ public class ModDetailResourceFragment extends Fragment {
return view; return view;
} }
private void download(Resource.File file){ private void download(Resource.File file, String modul, boolean downloadNew){
KVV kvv = ((MainActivity) getActivity()).getKVV(); KVV kvv = ((MainActivity) getActivity()).getKVV();
kvv.getModule(mItemPos, (Modules.Module module) -> {
kvv.getResourceFile(success1 -> {
if (success1.equals("")){//Datei wurde nicht heruntergeladen
log.d("ResourceFile Datei nicht vorhanden");
//todo Nutzer Info senden?
}else {
fileOpen(new File(success1));
}
}, error -> {
log.e(error); //log.d("ResourceFile berchtigungen: "+ isExternalStorageWritable());
}, file.getTitle(), file.getUrl(), module.title ); ActivityCompat.requestPermissions(ModDetailResourceFragment.super.getActivity(),
}, error -> { new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
log.e(error); 1);
});
if(isExternalStorageWritable()){
kvv.getResourceFile(success1 -> {
if (success1.equals("")){//Datei wurde nicht heruntergeladen
log.d("ResourceFile Datei nicht vorhanden");
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext());
alertDialogBuilder
.setTitle(R.string.ErrorFileDownload)
.setMessage(
R.string.ErrorFileDownloadText
)
.setCancelable(true)
.setNeutralButton(R.string.close, (dialog, id) -> dialog.cancel());
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}else {
fileOpen(new File(success1));
}
}, error -> {
log.e(error);
}, file.getTitle(), file.getUrl(), modul, downloadNew );
}
}
/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
//log.d("ResourceFile Environment.getExternalStorageState()"+state);
//log.d("ResourceFile Environment.MEDIA_MOUNTED"+Environment.MEDIA_MOUNTED);
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
log.d("Dateisystem: kein schreiben möglich");
return false;
} }
private void fileOpen(File url){ private void fileOpen(File url){

View File

@@ -137,8 +137,8 @@ public class KVV {
getModulePart(modules -> modules.getResources(module, saveOnCallback(modules, callback, forceRefresh), errorOnCallback(error), forceRefresh)); getModulePart(modules -> modules.getResources(module, saveOnCallback(modules, callback, forceRefresh), errorOnCallback(error), forceRefresh));
} }
public void getResourceFile(final NetworkCallback<String> callback, final NetworkErrorCallback error, String filename, String url, String moduleName){ public void getResourceFile(final NetworkCallback<String> callback, final NetworkErrorCallback error, String filename, String url, String moduleName, boolean downloadNew){
getModulePart(modules -> modules.getResourceFile(callback, errorOnCallback(error),filename, url, moduleName)); getModulePart(modules -> modules.getResourceFile(callback, errorOnCallback(error),filename, url, moduleName, downloadNew));
} }

View File

@@ -36,6 +36,8 @@ import de.sebse.fuplanner.tools.network.NetworkError;
import de.sebse.fuplanner.tools.network.NetworkErrorCallback; import de.sebse.fuplanner.tools.network.NetworkErrorCallback;
import de.sebse.fuplanner.tools.network.Result; import de.sebse.fuplanner.tools.network.Result;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
/** /**
* Created by sebastian on 29.10.17. * Created by sebastian on 29.10.17.
*/ */
@@ -519,13 +521,13 @@ class KVVModuleList extends HTTPService {
} }
public void getResourceFile( final NetworkCallback<String> callback, final NetworkErrorCallback errorCallback, String Filename, String url, String moduleName) { public void getResourceFile( final NetworkCallback<String> callback, final NetworkErrorCallback errorCallback, String Filename, String url, String moduleName, boolean downloadNew) {
//log.d("ResourceFile schreibrechte", WRITE_EXTERNAL_STORAGE);
//queueModuleDetails.add(module.getID(), () -> { //queueModuleDetails.add(module.getID(), () -> {
if (isExternalStorageReadable()){ if (isExternalStorageReadable()){
File f = new File(Environment.getExternalStoragePublicDirectory( File f = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS)+"/"+moduleName+"/"+Filename); Environment.DIRECTORY_DOWNLOADS)+"/"+moduleName+"/"+Filename);
if (f.exists()) {//prüffen ob bereits herunter gelagen... if (f.exists() && !downloadNew) {//prüffen ob bereits herunter gelagen und nicht erneut heruntergeladen werden...
callback.onResponse(f.getPath()); callback.onResponse(f.getPath());
log.d("ResourceFile laden aus Speicher"); log.d("ResourceFile laden aus Speicher");
return; return;
@@ -545,19 +547,25 @@ class KVVModuleList extends HTTPService {
get(url, token.getCookies(), response ->{ get(url, token.getCookies(), response ->{
final String[] pfad = {""}; final String[] pfad = {""};
if (response.getBytes()==null){
if (response.getParsed()==null) log.d("ResourceFile neu einlogen");
testLogin(token, token -> { testLogin(token, token -> {
if (isExternalStorageWritable()) { if (isExternalStorageWritable()) {
pfad[0] = saveFileInDownloads(Filename, response, moduleName); get(url, token.getCookies(), response2 ->{//probiern die Datei erneut zu laden
callback.onResponse(pfad[0]); log.d("ResourceFile: response2",response2.getParsed());
pfad[0] = saveFileInDownloads(Filename, response2, moduleName);
log.d("ResourceFile: pfad[0] 2",pfad[0]);
callback.onResponse(pfad[0]);
log.d("ResourceFile: ", token);
}, error -> errorCallback.onError(new NetworkError(101705, error.networkResponse.statusCode, "Cannot get File!")));
} else { } else {
errorCallback.onError(new NetworkError(101703, 403, "Exgternal storage not writeable!")); errorCallback.onError(new NetworkError(101703, 403, "Exgternal storage not writeable!"));
} }
}, errorCallback); }, errorCallback);
}
else if (isExternalStorageWritable()) { else if (isExternalStorageWritable()) {
pfad[0] = saveFileInDownloads(Filename, response, moduleName); pfad[0] = saveFileInDownloads(Filename, response, moduleName);
log.d("ResourceFile: ", token); //log.d("ResourceFile: ", token);
callback.onResponse(pfad[0]); callback.onResponse(pfad[0]);
} else { } else {
errorCallback.onError(new NetworkError(101704, 403, "Exgternal storage not writeable!")); errorCallback.onError(new NetworkError(101704, 403, "Exgternal storage not writeable!"));

View File

@@ -58,4 +58,7 @@
<string name="creator_name">Erstellt von: %1$s</string> <string name="creator_name">Erstellt von: %1$s</string>
<string name="last_modified_on">Letzte Änderung: %1$s</string> <string name="last_modified_on">Letzte Änderung: %1$s</string>
<string name="download">Download</string> <string name="download">Download</string>
<string name="openFile">Datei Öffnen</string>
<string name="ErrorFileDownload">Download Fehler</string>
<string name="ErrorFileDownloadText">Beim herunterladen der Datei ist ein fehler aufgetreten. Prüfen Sie bitte ob sie mit dem Internet Verbunden sind und ob Sie der APP zugriff auf den speicher gewert haben.</string>
</resources> </resources>

View File

@@ -65,4 +65,7 @@
<string name="creator_name">Created by: %1$s</string> <string name="creator_name">Created by: %1$s</string>
<string name="last_modified_on">Last Modified: %1$s</string> <string name="last_modified_on">Last Modified: %1$s</string>
<string name="download">Download</string> <string name="download">Download</string>
<string name="openFile">Open File</string>
<string name="ErrorFileDownload">Download Error</string>
<string name="ErrorFileDownloadText">An error occurred while downloading the file. Please check if you are connected to the internet and if you have used the app to access the memory.</string>
</resources> </resources>