Bu yazimdan Jsoup kullanimi ile ilgili ornek yapacagim.
Oncelikle Jsoup nedir kisaca ondan bahsedelim. Jsoup html parse eden yani ayristiran bir java kutuphanesidir. Jsoup ile html sayfalarindan css elemanlarini kullanarak veri cekebilir ve bu verileri uygulamamiz icinde kullanabiliriz.
Dezavantaji ise web sitesinin html elemanlarinda degisiklik yapildiginda istedigimiz veriyi cekemeyebiliriz.
Oncelikle ilk adim olarak build.gradle a jsoup u ekleyelim.
compile 'org.jsoup:jsoup:1.11.3'
Simdi de Manifest e gidip internet izni verelim cunku uygulamamiz internetten veri cekecek.Simdi layoutumuza bir buton koyalim ve o butona tiklandiginda http://sengamze.blogspot.com/2019/04/android-resim-ekleme.html
bu linkte yer alan yazimin basligini ekrana yazdirsin.
package gykizmir.com.jsoupexample;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
Button learnTitleBtn;
TextView titleOfBlog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
titleOfBlog = (TextView) findViewById(R.id.learnTitle);
learnTitleBtn = (Button) findViewById(R.id.learnTitle);
learnTitleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Title().execute();
}
});
}
private class Title extends AsyncTask<Void, Void, Void>{
String url = "http://sengamze.blogspot.com/2019/04/android-resim-ekleme.html";
String title;
ProgressDialog progressDialog;
@Override
protected void onPreExecute(){
super.onPreExecute();
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("Jsoup Example");
progressDialog.setMessage("Title is retrieving");
progressDialog.setIndeterminate(false);
progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try {
Document document = Jsoup.connect(url).get();
title = document.title();
} catch (IOException ex){
ex.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void avoid){
titleOfBlog.setText(title);
progressDialog.dismiss();
}
}
}
layoutumuz ise asagidaki gibi olmali.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
tools:context="gykizmir.com.jsoupexample.MainActivity">
<Button
android:id="@+id/learnTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Learn Title"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Title" />
</LinearLayout>
Calistirdigimizda ise ekran goruntusu asagidaki gibidir.

