Для работы с файлами создайте приложение «FileActivity», в котором используются методы, реализованные в модуле FileConnectorApi.
Приложение позволяет скачивать файлы на мобильное устройство с файлового сервера или отправлять файлы на него. Приложение работает аналогично приложению Яндекс.Диск или Google.Drive.
Перед созданием приложения «FileActivity» добавьте настройку подключения к папке на файловом сервере.
Приложение «FileActivity» состоит из одного экрана и кнопок:
«FILEGET». Получение файла;
«FILEGETMETA». Получение метаинформации файла;
«FILEPUT». Отправление файла;
«FILEDELETE». Удаление файла на сервере;
«DIRECTORYGET». Получение списка файлов указанной директории.
Для просмотра результата работы приложения используйте интерактивный пример:
Нажмите любую кнопку
public class FileActivity extends AppCompatActivity {
private static final String MY_URL = "http://testmasterfmp.fsight.cloud/";
private static final VersionAPI MY_VERSION_API = VersionAPI.V_1;
private static final String MY_ENVIRONMENT = "Leonid_environment";
private static final String MY_PROJECT = "Leonid_project";
private static final String MY_VERSION = "v1";
private static final String MY_LOGIN = "Leonid";
private static final String MY_PASSWORD = "123123";
private static final String MOUNT_NAME = "nfs4";
private static final String TAG = "FileActivity";
private HyperHive hyperHive;
private EditText editText;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file);
editText = findViewById(R.id.edit_text_file);
editText.setText("123.txt");
textView = findViewById(R.id.text_view_file);
Handler uiHandler = new Handler();
hyperHive = new HyperHiveState(getApplicationContext())
.setHostWithSchema(MY_URL)
.setApiVersion(MY_VERSION_API)
.setEnvironmentSlug(MY_ENVIRONMENT)
.setProjectSlug(MY_PROJECT)
.setVersionProject(MY_VERSION)
.setHandler(uiHandler)
.buildHyperHive();
authentication();
}
public void authentication() {
boolean status = hyperHive.authAPI.auth(MY_LOGIN, MY_PASSWORD, true).execute().isOk();
showStatus(status);
}
private void showStatus(boolean status) {
Log.d(TAG, "status: " + status);
Toast.makeText(this, String.valueOf(status), Toast.LENGTH_SHORT).show();
}
// Запросим разрешение на чтение и запись
private void getPermissions() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
}
// Создадим файл по указанному пути «/storage/emulated/0/Download/»
private void createFile() {
String fullPath = "/storage/emulated/0/Download/" + editText.getText().toString();
getPermissions();
File file = new File(fullPath);
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
// Получим файл
public void fileGet(View view) {
createFile();
boolean status = hyperHive.fileConnectorApi.fileGet("/storage/emulated/0/Download/" + editText.getText().toString(), editText.getText().toString(), MOUNT_NAME).execute().isOk();
showStatus(status);
}
// Получим метаинформацию
public void fileGetMeta(View view) {
boolean status = hyperHive.fileConnectorApi.fileGetMeta(editText.getText().toString(), MOUNT_NAME).execute().isOk();
showStatus(status);
}
// Отправим файл
public void filePut(View view) {
getPermissions();
boolean status = hyperHive.fileConnectorApi.filePut("/storage/emulated/0/Download/" + editText.getText().toString(), editText.getText().toString(), MOUNT_NAME).execute().isOk();
showStatus(status);
}
// Удалим файл
public void fileDelete(View view) {
boolean status = hyperHive.fileConnectorApi.fileDelete(editText.getText().toString(), MOUNT_NAME).execute().isOk();
showStatus(status);
}
// Получим список файлов
public void directoryGet(View view) {
BaseStatus baseStatus = hyperHive.fileConnectorApi.directoryGet(".", MOUNT_NAME).execute();
textView.setText(baseStatus.toString());
showStatus(baseStatus.isOk());
}
}
Для шифрования файлов используйте код приложения:
import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import com.mobrun.plugin.api.HyperHive
import ru.fsight.tutorial.app.Cache
class Main: Activity()
{
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
button.setOnClickListener { text.text = fmpDownload() }
}
private fun fmpDownload(): String =
try
{
val file = "lorem.txt"
val file_local = "$cacheDir/$file"
val mount = "nfs4"
val password = "password"
val response = hyperHive.filesApi.fileGet(file_local, file, mount, password).execute()
val file_content = String(hyperHive.filesApi.fileDecrypt(file_local, password).execute())
"$response\n\n$file_content"
}
catch (e: Exception)
{
"Error: $e."
}
}
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.mobrun.plugin.api.HyperHive;
import com.mobrun.plugin.models.BaseStatus;
class Scratch extends Activity
{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
((Button) findViewById(R.id.button)).setOnClickListener((v) -> {
((TextView) findViewById(R.id.text)).setText(fmpDownload());
});
}
private String fmpDownload()
{
try
{
final String file = "lorem.txt";
final String file_local = getCacheDir() + "/" + file;
final String mount = "nfs4";
final String password = "password";
HyperHive hyperHive;
final BaseStatus response = hyperHive.filesApi.fileGet(file_local, file, mount, password).execute();
final String file_content = new String(hyperHive.filesApi.fileDecrypt(file_local, password).execute());
return response.toString() + "\n\n" + file_content;
}
catch (Exception e)
{
return "Error : " + e;
}
}
}
См. также: