//Z1-MI2 ContentProvider - SQLiteOpenHelper

//LAYOUT - activity_main.xml - ne diram nista
//JAVA - MainActivity.java - ne diram nista
//-kreiram StudijOpenHelper.java extends SQLiteOpenHelper
//-generiram konstruktor (context, name, factory, version)
//-override-am metode onCreate i onUpgrade

//kreiram klasu Studij.java i deklariram:
private int ID;
private String naziv;
private int razinaStudija;
private String strucniNaziv;
//-generiram gettere i settere za te varijable

//kreiram klasu StudijProvider extends ContentProvider i deklariram:
String authority = "com.mi2.studij"; //- paket + naziv klase
Uri uri = Uri.parse("content://" + authority + "/studij");
UriMatcher uriMatcher;
StudijOpenHelper helper;
private static final int studij = 1;
private static final int studijID = 2;
String tablica = "Studij";
String KOLID = "ID";

//u onCreate-u:
helper = new StudijOpenHelper(this.getContext(), "baza.db", null, 1);
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(authority, "studiji", studij);
uriMatcher.addURI(authority, "studiji/#", studijID);
return false;

//generiram metode i obrađujem koje se traze
//public Cursor query(...){
SQLiteQueryBuilder sql = new SQLiteQueryBuilder();
sql.setTables(tablica);
SQLiteDatabase db = helper.getWritableDatabase();
if (uriMatcher.match(uri) == studijID) {
String id = uri.getLastPathSegment();
String where = KOLID + "=" + id;
if (selectio == null)
selection = where;
else
selection = selection + " (" + KOLID + "=" + where + ")";
}
return sql.query(db, projection, selection, selectionArgs, null, null, sortOrder);

//delete metoda
SQLiteDatabase db = helper.getWritableDatabase();
if (uriMatcher.match(uri) == studijID) {
String id = uri.getLastPathSegment();
selection = KOLID + "=?";
selectionArgs = new String[] {id};
}
return db.delete(tablica, selection, selectionArgs);
_________________________________________________________________________________________

//Z2-MI2 ContentProvider

//LAYOUT - activity_main.xml - ima samo tvRezultat
//JAVA - MainActivity.java - jedina datoteka u zadatku, deklariram:
Uri uriProizvodac = Uri.parse("content://com.test/proizvodac");
Uri uriUredaj = Uri.parse("content://com.test/uredaj");
ContentResolver cr;
String IDProizvodac = "IDProizvodac", Naziv = "Naziv", Sifra = "Sifra";
String IDUredaj = "IDUredaj", Datum = "Datum";
TextView tvRezultat;

void ucitajPodatke() {
String[] projekcijaProizvodac = new String[] {
IDProizvodac, Naziv, Sifra;
}
String[] projekcijaUredaj = new String[] {
IDUredaj, Naziv, Datum, IDProizvodac;
}

Cursor curProizv = cr.query(uriProizvodac, projekcijaProizvodac, null, null, null);
StringBuilder sb = new StringBuilder();

while (curProizv.moveToNext()) {
int zbroj = 0;
String id = curProizv.getString(curProizv.getColumnIndex(IDProizvodac));
String naziv = curProizv.getString(curProizv.getColumnIndex(Naziv));
String sifra = curProizv.getString(curProizv.getColumnIndex(Sifra));
String where = IDProizvodac + "=?";
String[] whereArgs = new String[] {id};

Cursor curUredaj = cr.query(uriUredaj, projekcijaUredaj, where, whereArgs, null);
while (curUredaj.moveToNext()) {
zbroj++;
}
sb.append("Proizvodac: " + naziv + " (" + sifra + ") - " + zbroj + "\n");
}

ispisiRezultat(sb.toString());
}

private void ispisiRezultat(String s) {tvRezultat.setText(s);}

//u onCreate-u:
this.cr = this.getContentResolver();
this.tvRezultat = (TextView) this.findViewById(R.id.tvRezultat);
_________________________________________________________________________________________

//Z3-MI2 Intenti

//LAYOUT - activity_main.xml - ima TextView tvRezultat, Button btnImplicitno i Button btnEksplicitno
//JAVA - MainActivity.java - prvo deklaracija:
private static String textA = "ABCDEFG";
private static String textB = "CD";
TextView tvRezultat;
Button btnImplicitno, btnEksplicitno;
private static final int REQ_CODE = 1;

//u onCreate-u:
this.tvRezultat = (TextView) this.findViewById(R.id.tvRezultat);
this.btnEksplicitno = (Button) this.findViewById(R.id.btnEksplicitno);
this.btnImplicitno = (Button) this.findViewById(R.id.btnImplicitno);

//btnEksplicitno.setOnClickListener... {
explicitno();
}
//btnImplicitno.setOnClickListener... {
implicitno();
}

//ispod onCreate-a:
private void implicitno() {
String akcija = "com.z3.izracun";
Intent intent = new Intent(akcija);
intent.putExtra("textA", textA);
intent.putExtra("textB", textB);
this.startActivityForResult(intent, REQ_CODE);
}

private void explicitno() {
Intent intent = new Intent(this, IzracunAktivnost.class);
intent.putExtra("textA", textA);
intent.putExtra("textB", textB);
this.startActivityForResult(intent, REQ_CODE);
}

//override-am onActivityResult i dodam:
if (requestCode == REQ_CODE && resultCode == RESULT_OK) {
String rezultat = data.getStringExtra("rezultat");
tvRezultat.setText(rezultat);
}

//JAVA - IzracunAktivnost.java extends AppCompatActivity
//u onCreate-u:
Intent intentUlaz = this.getIntent();
String textA = intentUlaz.getStringExtra("textA");
String textB = intentUlaz.getStringExtra("textB");
Intent intentRez = new Intent();
intentRez.putExtra("rezultat", usporedi(textA, textB));
this.setResult(RESULT_OK, intentRez);
this.finish();

//ispod onCreate-a, simulacija usporedbe
private String usporedi(String textA, String textB) {
String textC = textA;
return textC;
}

//MANIFEST - u <application> prije zatvaranja dodajem:
<activity android:name=".IzracunAktivnost">
<intent-filter>
<action android:name="com.z3.izracun"/>
<category android:name="ANDROID.INTENT.CATEGORY.DEFAULT"/>
</intent-filter>
</activity>
//</application>
_________________________________________________________________________________________

//Z4-MI2 SharedPreferences i slanje SMS poruke

//LAYOUT - activity_main.xml
TextView tvPoruka Poruka
EditText etPoruka
TextView tvTelefon Telefon
EditText etTelefon
Button btnPosalji Pošalji

//JAVA - MainActivity.java - deklariram:
EditText etTelefon, etPoruka;
Button btnPosalji;
//u onCreate-u:
etTelefon = (EditText) this.findViewById(R.id.etTelefon);
etPoruka = (EditText) this.findViewById(R.id.etPoruka);
btnPosalji = (Button) this.findViewById(R.id.btnPosalji);

//btnPosalji.setOnClickListener... {
posaljiSMS();
}

//prije zatvaranja onCreate-a treba još dodati:
ucitajPostavke();

//izvan onCreate-a:
private void posaljiSMS() {
ucitajPostavke();
boolean trebaLiPotpis = trebaPotpis();
String poruka = etPoruka.getText().toString();
StringBuilder sms = new StringBuilder();
sms.append(poruka + "\n");
if (trebaLiPotpis) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String potpis = sp.getString("potpis", "");
sms.append(potpis);
}
Toast.makeText(this, "saljem SMS " + sms.toString(), Toast.LENGTH_SHORT).show();
}

private boolean trebaPotpis() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
boolean potpis = sp.getBoolean("dodajPotpis", false);
return potpis;
}

private void ucitajPostavke() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String telefon = sp.getString("brojTelefona", "nema broja");
this.etTelefon.setText(telefon);
}

//kreiram novi activity PostavkeActivity.java extends AppCompatActivity
//u onCreate dodam:
this.setContentView(R.layout.aktivnost_postavke); //ako već nije dodan novi layout

//u resources dodajem novu mapu xml i datoteku postavke.xml
<EditTextPreference
android:key="potpis"
android:title="Potpis"
android:summary="Potpis" />
<EditTextPreference
android:key="brojTelefona"
android:title="Telefon"
android:summary="Upišite telefon" />
<SwitchPreference
android:key="dodajPotpis"
android:textOff="Ne"
android:textOn="Da"
android:title="Dodaj potpis ?" />

//JAVA - PostavkeFragment.java extends PreferenceManager implements SharedPreferences.OnSharedPreferenceChangeListener
//u onCreate-u mora biti:
this.addPreferencesFromResource(R.xml.postavke);
EditTextPreference potpis = (EditTextPreference) this.findPreference("potpis");
potpis.setSummary(potpis.getText());
EditTextPreference telefon = (EditTextPreference) this.findPreference("brojTelefona");
telefon.setSummary(telefon.getText());

//override-am onPause i dodam:
this.getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);

//override-am onResume i dodam:
this.getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);

//override-am onSharedPreferenceChanged i dodam:
if (key.equals("potpis")) {
EditTextPreference potpis = (EditTextPreference) this.findPreference("potpis");
potpis.setSummary(potpis.getEditText().getText());
} else if (key.equals("brojTelefona")) {
EditTextPreference telefon = (EditTextPreference) this.findPreference("brojTelefona");
telefon.setSummary(telefon.getEditText().getText());
}

//MANIFEST - treba dodati samo:
<activity android:name=".PostavkeActivity"/>

_________________________________________________________________________________________

//Z3-Vjezbe Intenti - Aktivnosti A, B i C i Pocetna

//LAYOUT - activity_main.xml - tvRezultat i btnPokreni
//JAVA - MainActivity ili PocetnaAktivnost.java, dodam kontrole:
TextView tvRezultat;
Button btnPrikazi;
Random random = new Random();
private final int mojRequestCode = 100;

//u onCreate-u:
tvRezultat = (TextView) findViewById(R.id.tvRezultat);
btnPrikazi = (Button) findViewById(R.id.btnPrikazi);
//btnPrikazi.setOnClickListener (new View...) {
//na početku onClicka iznad njegovog glavnog koda
int broj = random.nextInt(3);
Intent intent = null;
}
//nakon onClicka obavezno dodajem još ovo:
startActivityForResult(intent, mojRequestCode);

//override-am onActivityResult (sa requestCode-om, resultCode-om, data-om)...
if (requestCode == mojRequestCode && resultCode == Activity.RESULT_OK) {
tvRezultat.setText(data.getStringExtra("NazivAktivnosti"));
}

//kreiram novu klasu AktivnostA.java extends Activity
//u onCreate-u:
Intent rezultat = new Intent();
rezultat.putExtra("NazivAktivnosti", "AktivnostA");
setResult(Activity.RESULT_OK, rezultat);

//kopiram AktivnostA 2 puta i promijenim ime i samo redak rezultat.putExtra - (AktivnostA ide AktivnostB, AktivnostC)

//vraćam se u PocetnaAktivnost.java u red ispod Intent intent = null;
//kreiram switch
switch (broj) {
case 0:
intent = new Intent(PocetnaAktivnost.this, AktivnostA.class);
break;
case 1:
intent = new Intent(PocetnaAktivnost.this, AktivnostB.class);
break;
case 2:
intent = new Intent(PocetnaAktivnost.this, AktivnostC.class);
break;
}

//MANIFEST - dodajem 3 retka ispod </intent-filter></activity>
<activity android:name=".AktivnostA" />
<activity android:name=".AktivnostB" />
<activity android:name=".AktivnostC" />

_________________________________________________________________________________________

//Z5-Vjezbe Postavke

//LAYOUT - activity_main.xml
//tvPoruka text:Poruka i etPoruka
//tvBrojTelefona text:Broj Telefona i etBrojTelefona
//Button btnPostavke i Button btnPosalji

//JAVA - MainActivity.java definiram:
EditText etPoruka;
EditText etBrojTelefona;
Button btnPostavke;
Button btnPosalji;

//u onCreate-u dohvaćam kontrole:
etPoruka = (EditText) findViewById(R.id.etPoruka);
etBrojTelefona = (EditText) findViewById(R.id.etBrojTelefona);
btnPosalji = (Button) findViewById(R.id.btnPosalji);
btnPostavke = (Button) findViewById(R.id.btnPostavke);

//btnPosalji.setOnClickListener (new View...) {
//OVO JE NAJVAŽNIJE:
SMSManager.getDefault().sendTextMessage(etBrojTelefona.getText().toString(), null, etPoruka.getText().toString(), null, null);
//nakon ovoga u resurse dodajem xml datoteku preference screen naziva postavke.xml

// u postavke.xml dodajem:
<EditTextPreference
android:key="Poruka"
android:title="Poruka"
android:summary="Unesite poruku" />
<EditTextPreference
android:key="BrojTelefona"
android:title="BrojTelefona"
android:summary="Unesite broj telefona" />

//kreiram novu klasu PostavkeFragment.java exends PreferenceFragment
//u onCreate-u dodajem:
addPreferencesFromResource(R.xml.postavke);

//kreiram novi activity PostavkeAktivnost.java extends Activity ili AppCompatActivity
//i provjerim je li dodan id u datoteci layouta activity_postavke_aktivnost.xml
//u onCreate-u PostavkeAktivnost.java dodajem JAKO VAŽNO:
getFragmentManager().beginTransaction().add(R.id.activity_postavke_aktivnost, new PostavkeFragment()).commit();

//vraćam se u MainActivity.java i dalje sam u onCreate-u:
//btnPostavke.setOnClickListener.. {
//onCLick {
Intent intent = new Intent(MainActivity.this, PostavkeAktivnost.class);
startActivity(intent);
}

//override-am onResume metodu i ispod super.onResume(); dodajem:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
etPoruka.setText(sp.getString("Poruka", "Nema ništa"));
etBrojTelefona.setText(sp.getString("BrojTelefona", "Nema ništa"));

//MANIFEST - iznad <application>
<uses-permission android:name="android.permission.SEND_SMS" />

//u <application> na kraju dodajem:
<activity
android:name=".PostavkeAktivnost"
android:label="PostavkeAktivnost" />

_________________________________________________________________________________________

//Z2-Vjezbe ContentProvider

//LAYOUT - activity_main.xml ima samo tvRezultat
//JAVA sadrži MainActivity.java, MjestoProvider.java i Racun.java
//MANIFEST - dodano na kraju <applicatin>-a samo sljedeće:
<provider
android:authorities="com.demo.mjestoprovider"
android:name=".MjestoProvider"
android:exported="true"/>

//MainActivity.java
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Uri uriRacun = Uri.parse("content://com.ispit.primjer/racun");
Uri uriStavka = Uri.parse("content://com.ispit.primjer/stavka");

ArrayList<Racun> racuni = new ArrayList<>();

ContentResolver resolver = getContentResolver();

Cursor cursorRacun = resolver.query(uriRacun, new String[]{"ID", "Broj"}, null, null, null);

while (cursorRacun.moveToNext())
{
Racun racun = new Racun (cursorRacun.getString(1));

racuni.add(racun);

Cursor cursorStavka = resolver.query(uriStavka, new String[]{"Cijena", "Kolicina"}, "RacunID=" + cursorRacun.getInt(0), null, null);

while (cursorStavka.moveToNext())
{
double iznosStavke = cursorStavka.getInt(1) * cursorStavka.getDouble(0);
racun.setIznos(racun.getIznos() + iznosStavke);
}

cursorStavka.close();
}

cursorRacun.close();

StringBuilder sb = new StringBuilder();
for (Racun racun : racuni)
{
sb.append(racun.getBroj());
sb.append(" - ");
sb.append(racun.getIznos());
sb.append("\r\n");
}
String rezultat = sb.toString();

((TextView)findViewById(R.id.tvRezultat)).setText(rezultat);
}
}

//MjestoProvider.java
public class MjestoProvider extends ContentProvider {
public static final String AUTHORITY = "com.demo.mjestoprovider";
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/mjesta");
private static final int MJESTA = 1;
private static final int MJESTO = 2;

UriMatcher uriMatcher;
SQLiteDatabase database;

public boolean onCreate() {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(AUTHORITY, "mjesta", MJESTA);
uriMatcher.addURI(AUTHORITY, "mjesta/#", MJESTO);
return true;
}

@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables("mjesto");

// /mjesta/45
if (uriMatcher.match(uri) == MJESTO)
{
builder.appendWhere("ID=" + uri.getLastPathSegment());
}

return builder.query(database, projection, selection, selectionArgs, null, null, sortOrder);
}

@Override
public String getType(Uri uri) {
switch (uriMatcher.match(uri))
{
case MJESTA:
return "vnd.android.cursor.dir/vnd.demo.com.mjesto";
case MJESTO:
return "vnd.android.cursor.item/vnd.demo.com.mjesto";
}

return null;
}

@Override
public Uri insert(Uri uri, ContentValues values) {
long id = database.insertOrThrow("mjesto", null, values);

if (id>0)
return ContentUris.withAppendedId(CONTENT_URI, id);

return null;
}

@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
if (uriMatcher.match(uri) == MJESTO)
{
String where = "ID=" + uri.getLastPathSegment();
if (selection == null)
selection = where;
else
selection = selection + " AND (" + where + ")";
}

return database.delete("mjesto", selection, selectionArgs);
}

@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {

if (uriMatcher.match(uri) == MJESTO)
{
String where = "ID=" + uri.getLastPathSegment();
if (selection == null)
selection = where;
else
selection = selection + " AND (" + where + ")";
}

return database.update("mjesto", values, selection, selectionArgs);
}
}

//Racun.java
public class Racun {
private String broj;
private double iznos;

public String getBroj() {
return broj;
}

public void setBroj(String broj) {
this.broj = broj;
}

public double getIznos() {
return iznos;
}

public void setIznos(double iznos) {
this.iznos = iznos;
}

public Racun(String broj) {
this.broj = broj;
}
}

------------------------------------------

LINK NA STARO 1

----------------------------------------- 

 

 

------------------------------------------

LINK NA STARO 2

----------------------------------------- 

------------------------------------------

LINK NA STARO 3

-----------------------------------------