Assalamualaikum, semoga kita semua dalam lindungan Allah SWT, aamiin. Kali ini akan membahas sesuai judul blog yaitu Pengenalan Asyntask dan AsyntaskLoader pada android studio.
1. Pelaksanaan praktikum
a. buka aplikasi android studio
b. Jalankan aplikasi Android studio, caranya :
Pilih start (android studio) -> start A new Android studio project -> Empty activiti -> Next.
Konfigurasikan Project dengan:
– Name = AsyncTaskDownload
– Save Location = Pilih tempat dimana Project akan disimpan
– Languange = Java. Jika sudah, klik Finish.
c. Ubah script file activity_main.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”
android:paddingLeft=”10dp”
android:paddingTop=”10dp”
android:paddingRight=”10dp”
android:paddingBottom=”10dp”
tools:context=”.MainActivity”>
<Button
android:id=”@+id/button1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”Download” />
<TextView
android:id=”@+id/attrs”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentRight=”true”
android:layout_alignParentBottom=”true”
android:layout_marginBottom=”15dp”
android:layout_marginRight=”15dp”
android:text=”objectoprogramming.wordpress.com”
android:textStyle=”bold” />
</RelativeLayout>
d. Buka dan ubah script mainActivity.java
package objectoprogramming.wordpress.com.asynctaskdownload;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import android.util.Log;
public class MainActivity extends AppCompatActivity implements OnClickListener {
public static final int download_progress = 0;
private String file_url = “http://adi.unggasid.com/wp-content/upload/2021/01/Ringkasan-Tesis-Adi-Muhamad.pdf”;
Button btn_download;
ProgressDialog prgDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_download = (Button) findViewById(R.id.button1);
btn_download.setOnClickListener(this);
}
@Override
public void onClick (View view) {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
Log.i(“Permission”, “Permission is Denied”);
ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},101);
} else {
new DownloadFileAsync().execute(file_url);
}
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case download_progress:
prgDialog = new ProgressDialog(this);
prgDialog.setMessage(“Download file…”);
prgDialog.setIndeterminate(false);
prgDialog.setMax(100);
prgDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
prgDialog.setCancelable(false);
prgDialog.show();
return prgDialog;
default:
return null;
}
}
class DownloadFileAsync extends AsyncTask<String, Integer, String> {
@Override
protected void onPreExecute() {
showDialog(download_progress);
}
@Override
protected String doInBackground(String… aurl) {
Log.i(“testing”, “url download : ” + aurl[0]);
URL url = null;
int count;
try {
url = new URL(aurl[0]);
URLConnection conexion = url.openConnection();
Log.i(“koneksi”, “koneksi berhasil”);
int lenghtOfFile = conexion.getContentLength();
Log.i(“UkuranFile”, “ukuran : ” + String.valueOf(lenghtOfFile));
InputStream input = new BufferedInputStream(url.openStream(),10*1024);
String fileName = conexion.getHeaderField(“Content-Disposition”);
if (fileName == null || fileName.length() < 1) {
URL downloadUrl = conexion.getURL();
fileName = downloadUrl.getFile();
fileName = fileName.substring(fileName.lastIndexOf(“/”) + 1);
} else {
fileName = URLDecoder.decode(fileName.substring(fileName.indexOf(“filename=”) + 9),”UTF-8″);
fileName = fileName.replaceAll(“\””, “”);
}
OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory().getPath() + “/Download” + fileName);
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress((int) ((total*100)/lenghtOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {
e.printStackTrace();
Log.d(“koneksi”, “koneksi gagal”);
}
return null;
}
protected void onProgressUpdate(Integer… progress) {
prgDialog.setProgress(progress[0]);
}
protected void onPostExecute(String result) {
dismissDialog(download_progress);
Toast.makeText(getApplicationContext(), “Download complete. FIle in /sdcard/Download”, Toast.LENGTH_SHORT).show();
}
}
}
e. Buat sebuah file dengan nama network_security_config.xml di dalam folder/res/html kemudian ketikkan kode seperti di bawah ini
<?xml version=”1.0″ encoding=”utf-8″?>
<network-security-config
xmlns:android=”http://schemas.android.com/apk/res/android”>
<base-config cleartextTrafficPermitted = “true”/>
</network-security-config>
f. Sesuaikan Script AndroidManifest.xml seperti di bawah ini untuk mendaftarkan komponen intent filter dan mendaftarkan permission akses internet dan write external storage yang dibutuhkan
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”objectoprogramming.wordpress.com.asynctaskdownload”>
<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
<application
android:requestLegacyExternalStorage=”true”
android:usesCleartextTraffic=”true”
android:networkSecurityConfig=”@xml/network_security_config”
android:allowBackup=”true”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:roundIcon=”@mipmap/ic_launcher_round”
android:theme=”@style/Theme.AppCompat”
android:supportsRtl=”true”>
<activity android:name=”.MainActivity”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>
</manifest>
g. Lalu coba jalankan menggunakan emulator yang tersedia di Android studio.
Sekian, mohon maaf bila ada salah pengetikan maupun bahasa yang digunakan. Wassalamu’alaikum wr wb
Tidak ada komentar:
Posting Komentar