package com.alexbbb.uploadservice; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.Toast; import java.io.File; import java.net.URL; import java.util.UUID; /** * Activity that demonstrates how to use Android Upload Service. * * @author Alex Gotev * */ public class MainActivity extends Activity { private static final String TAG = "AndroidUploadServiceDemo"; private ProgressBar progressBar; private Button uploadButton; private Button cancelUploadButton; private EditText serverUrl; private EditText fileToUpload; private EditText parameterName; private final AbstractUploadServiceReceiver uploadReceiver = new AbstractUploadServiceReceiver() { @Override public void onProgress(String uploadId, int progress) { progressBar.setProgress(progress); //Log.i(TAG, "progress upload " + uploadId); } @Override public void onError(String uploadId, Exception exception) { progressBar.setProgress(0); String message = "Error in upload with ID: " + uploadId + ". " + exception.getLocalizedMessage(); //Log.e(TAG, message, exception); } @Override public void onCompleted(String uploadId, int serverResponseCode, String serverResponseMessage) { progressBar.setProgress(0); String message = "Upload with ID " + uploadId + " is completed: " + serverResponseCode + ", " + serverResponseMessage; //Log.i(TAG, message); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Set your application namespace to avoid conflicts with other apps // using this library UploadService.NAMESPACE = "com.Posterize"; progressBar = (ProgressBar) findViewById(R.id.uploadProgress); serverUrl = (EditText) findViewById(R.id.serverURL); fileToUpload = (EditText) findViewById(R.id.fileToUpload); parameterName = (EditText) findViewById(R.id.parameterName); uploadButton = (Button) findViewById(R.id.uploadButton); cancelUploadButton = (Button) findViewById(R.id.cancelUploadButton); uploadButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { onUploadButtonClick(); } }); cancelUploadButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { onCancelUploadButtonClick(); } }); progressBar.setMax(100); progressBar.setProgress(0); // De-comment this line to enable self-signed SSL certificates in HTTPS connections // WARNING: Do not use in production environment. Recommended for development only // AllCertificatesAndHostsTruster.apply(); } @Override protected void onResume() { super.onResume(); uploadReceiver.register(this); } @Override protected void onPause() { super.onPause(); uploadReceiver.unregister(this); } private boolean userInputIsValid(final String serverUrlString, final String fileToUploadPath, final String paramNameString) { if (serverUrlString.length() == 0) { Toast.makeText(this, getString(R.string.provide_valid_server_url), Toast.LENGTH_LONG).show(); return false; } try { new URL(serverUrlString.toString()); } catch (Exception exc) { Toast.makeText(this, getString(R.string.provide_valid_server_url), Toast.LENGTH_LONG).show(); return false; } if (fileToUploadPath.length() == 0) { Toast.makeText(this, getString(R.string.provide_file_to_upload), Toast.LENGTH_LONG).show(); return false; } if (!new File(fileToUploadPath).exists()) { Toast.makeText(this, getString(R.string.file_does_not_exist), Toast.LENGTH_LONG).show(); return false; } if (paramNameString.length() == 0) { Toast.makeText(this, getString(R.string.provide_param_name), Toast.LENGTH_LONG).show(); return false; } return true; } private void onUploadButtonClick() { final String serverUrlString = serverUrl.getText().toString(); final String fileToUploadPath = fileToUpload.getText().toString(); final String paramNameString = parameterName.getText().toString(); if (!userInputIsValid(serverUrlString, fileToUploadPath, paramNameString)) return; final UploadRequest request = new UploadRequest(this, UUID.randomUUID().toString(), serverUrlString); request.addFileToUpload(fileToUploadPath, paramNameString, "test", ContentType.APPLICATION_OCTET_STREAM); request.setNotificationConfig(R.drawable.ic_launcher, getString(R.string.app_name), getString(R.string.uploading), getString(R.string.upload_success), getString(R.string.upload_error), false); // if you comment the following line, the system default user-agent will be used request.setCustomUserAgent("UploadServiceDemo/1.0"); // set the intent to perform when the user taps on the upload notification. // currently tested only with intents that launches an activity // if you comment this line, no action will be performed when the user taps on the notification request.setNotificationClickIntent(new Intent(this, MainActivity.class)); // set the maximum number of automatic upload retries on error request.setMaxRetries(2); try { UploadService.startUpload(request); } catch (Exception exc) { Toast.makeText(this, "Malformed upload request. " + exc.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); } } private void onCancelUploadButtonClick() { UploadService.stopCurrentUpload(); } }