Monday, October 27, 2014

Android developer : How to start activity for result.

Calling a second activity from the main activity by startActivityForResult. When second activity is finish, it will send back result (some data) to main activity.
How main activity get the result ?

From your FirstActivity call the SecondActivity using startActivityForResult() method

 Intent i = new Intent(this, SecondActivity.class);  
 startActivityForResult(i, 1);  

In your SecondActivity set the data which you want to return back to FirstActivity. If you don't want to return back, don't set any.
For example: In secondActivity if you want to send back data:
 Intent returnIntent = new Intent();  
 returnIntent.putExtra("result",result);  
 setResult(RESULT_OK,returnIntent);  
 finish();  

If you don't want to return data:

 Intent returnIntent = new Intent();  
 setResult(RESULT_CANCELED, returnIntent);  
 finish();  

Now in your FirstActivity class override onActivityResult() method. And process intent data by resultCode.
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
   if (requestCode == 1) {  
     if(resultCode == RESULT_OK){  
       String result=data.getStringExtra("result");  
     }  
     if (resultCode == RESULT_CANCELED) {  
       //Write your code if there's no result  
     }  
   }  
 }

reference : http://stackoverflow.com/questions/10407159/how-to-manage-start-activity-for-result-on-android

Monday, October 20, 2014

Android developer : how to cancel alarm

if your app create own alarm. how to cancel it ?
it's imposible to get alarm has been created (by name or by id).
this is a simple way to cancel alarm.
To cancel alarm you can use method AlarmManager.cancel(PENDING_INTENT)
Intent in create alarm and cancel alarm must be same.
there is some sample code.

when you create alarm :
 long nextAlarm = new Date().getTime();  
 Intent alarmIntent = new Intent(this, AlarmReceiver.class);  
 alarmIntent.putExtra(Constants.BundleKey.ALARM_TYPE_KEY, Constants.BundleKey.REPEAT_ALARM_VALUE);  
 PendingIntent pendingIntent = PendingIntent.getBroadcast(context,   
                               99, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);  
 AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);  
 alarmManager.set(AlarmManager.RTC_WAKEUP, nextAlarm, pendingIntent);  

when you cancel alarm :
 long nextAlarm = new Date().getTime();   
 Intent alarmIntent = new Intent(this, AlarmReceiver.class);   
 alarmIntent.putExtra(Constants.BundleKey.ALARM_TYPE_KEY, Constants.BundleKey.REPEAT_ALARM_VALUE);   
 PendingIntent pendingIntent = PendingIntent.getBroadcast(context,    
                 99, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);   
 AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);   
 alarmManager.cancel(pendingIntent);      

Intent in create and cancel alarm is same "Intent alarmIntent = new Intent(this, AlarmReceiver.class);"

Happy coding .
cheers :)

Sunday, October 19, 2014

My First Android App

This is my first android app on google play.
It is Football Reminder".  This app help you to see a timer when your favourite team playing, and give you and alarm if you're sleeping.

If you're like please download and give rating. :)

https://play.google.com/store/apps/details?id=com.andri.sasuke.footballreminder

Some screenshoots



 cheers :)


Thursday, January 2, 2014

Setting proxy di Maven

Bagaimana jika jaringan internet kita harus melewati sebuah proxy, di sisi lain kita harus menggunakan maven.
Maven tersebut harus mencari dependency library di internet.
Maka maven local kita harus melewati proxy juga.
Berikut ini cara setting proxy di maven.
Buka file : {MAVEN_HOME}/conf/settings.xml.

Un-comment <proxies> option di file setting.xml atau buat jika belum ada. Kemudian isikan detail proxy (<proxy>) yang dipakai.
Berikut ini detailnya :

 <proxies>  
   <!-- proxy  
    | Specification for one proxy, to be used in connecting to the network.   
    -->  
   <proxy>  
    <id>optional</id>  
    <active>true</active>  
    <protocol>http</protocol>  
    <username>proxyuser</</username>  
    <password>proxypassword</password>  
    <host>proxy.host.net</host>  
    <port>80</port>  
    <nonProxyHosts>local.net|some.host.com</nonProxyHosts>  
   </proxy>  
  </proxies>  

Selamat mencoba..

Show hidden file Mac OS X

Berikut ini adalah cara atau trik untuk menampilkan hidden file di Mac OS X.
Secara default mac os x tidak akan menampilkan hidden file atau folder kalau kita buka Finder.
Cara ini bisa dipakai di Mac OS X 10.7 ke atas.
yang saya pakai adalah versi 10.8.4

Berikut ini langkah-langkahnya :
  1. Buka Finder
  2. Buka terminal window
  3. Copy dan paste perintah berikut ini di terminal console:
    defaults write com.apple.Finder AppleShowAllFiles YES
     
    Tekan return atau enter
  4. Tekan tombol ‘alt’ dan klik kanan pada icon Finder icon di Dock launcer
  5. Pilih Relaunch
Maka otomatis hidden file atau folder akan tampil di window Finder.
Kalau ingin mengembalikan ke kondisi awal, ulangi langkah di atas. Tapi perintah yang dijalankan di terminal :
defaults write com.apple.Finder AppleShowAllFiles NO

Selamat mencoba..  :)

referensi : http://www.mikesel.info/show-hidden-files-mac-os-x-10-7-lion/

Wednesday, January 1, 2014

Membuat ComboBox group di ADF

Pada tulisan kali ini saya akan membahas tentang cara pembuatan group-option combo box (select item) di web application ADF.

Group option combobox maksudnya, combo box atau select item tetapi isi itemnya dikelompokkan berdasarkan kategori tertentu.
Kalau di HTML menggunakan tag <optgroup>

Berikut ini contohnya di code HTML :

 <select id="selectTypeProduct" size="1" name="selectTypeProduct">  
 <optgroup label="Computer">  
 <option value="1">Intel</option>  
 <option value="2">AMD</option>  
 </optgroup>  
 <optgroup label="Smartphone">  
 <option value="3">Samsung</option>  
 <option value="4">Iphone</option>  
 <option value="5">Sony</option>  
 <option value="6">Motorola</option>  
 </optgroup>  
 <optgroup label="Game">  
 <option value="7">Xbox</option>  
 <option value="8">PS4</option>  
 </optgroup>  
 </select>  















Nah bagaimana kalau kita membuatnya di aplikasi ADF.
Kita buat dulu projectnya. Buka IDE Jdeveloper.
Pilih new Application -> Fusion Web Application (ADF).
Kemudian kita buat halaman JSF dan class Backing bean nya.

Kemudian dari tab source kita drag element : SelectOneMenu dari component pallete. Ingat component yang kita pilih harus component JSF.












Berikut ini contoh source nya :

 <af:form id="f1" binding="#{backingBeanScope.backing_sample.f1}">  
     <af:outputText value="SAMPLE"  
             binding="#{backingBeanScope.backing_sample.txtTitle}"  
             id="txtTitle"/>  
     <af:panelLabelAndMessage label="Type Product : "  
                  binding="#{backingBeanScope.backing_sample.plam1}"  
                  id="plam1">  
     <h:selectOneMenu label="Type"  
              binding="#{backingBeanScope.backing_sample.selectTypeProduct}"  
              id="selectTypeProduct">  
      <f:selectItems value="#{backingBeanScope.backing_sample.optionsNamaProduct}"  
              binding="#{backingBeanScope.backing_sample.selectItemTypeProduct}"  
              id="selectItemTypeProduct"/>  
     </h:selectOneMenu>  
     </af:panelLabelAndMessage>  
    </af:form>  
   </af:document>  

di class backing bean nya kita buat property List<SelectItem>, tetapi jangan lupa dibuat juga getter nya.
 ............  
 private List<SelectItem> optionsNamaProduct;  
   public List<SelectItem> getOptionsNamaProduct() {  
     return optionsNamaProduct;  
   }  
 .............  

Kemudian di Constructor backing beannya kita akan mengisi List selectItem nya :

 public SampleComboBox(){  
     this.optionsNamaProduct = new ArrayList<SelectItem>();  
     SelectItemGroup groupComputer = new SelectItemGroup("Computer");  
     SelectItem[] itemComputers = new SelectItem[]{  
         new SelectItem(1,"Intel") ,  
         new SelectItem(2,"AMD") };  
     groupComputer.setSelectItems(itemComputers);  
     SelectItemGroup groupPhone = new SelectItemGroup("Smartphone");  
     SelectItem[] itemPhones = new SelectItem[]{  
         new SelectItem(3,"Samsung") ,  
         new SelectItem(4,"Iphone"),  
         new SelectItem(5,"Sony") ,  
         new SelectItem(6,"Motorola") };  
     groupPhone.setSelectItems(itemPhones);  
     SelectItemGroup groupGame = new SelectItemGroup("Game");  
     SelectItem[] itemGames = new SelectItem[]{  
         new SelectItem(7,"Xbox") ,  
         new SelectItem(8,"PS4") };  
     groupGame.setSelectItems(itemGames);  
     this.optionsNamaProduct.add(groupComputer);  
     this.optionsNamaProduct.add(groupPhone);  
     this.optionsNamaProduct.add(groupGame);  
   }  

List<SelectItem> diisi dengan SelectItemGroup yang dibuat berdasarkan kategori name nya.
Setiap SelectItemGroup diisi array SelectItem yang merupakan list item dari masing masing kategori.

<f:selectItems valuenya kita binding dengan List<SelectItem> tadi.
<f:selectItems value="#{backingBeanScope.backing_sample.optionsNamaProduct}" ..
       
Kemudian run halaman jspx nya dengan integrated weblogic di JDev.
Tampilannya kurang lebih seperti ini.
















Selamat mencoba :)

Thursday, December 19, 2013

Create webservice proxy dengan wsimport

Berikut ini adalah contoh membuat webservice proxy dengan perintah wsimport tanpa mengunakan IDE apapun.

wsimport adalah tool bawaan dari java untuk import webservice ke dalam bentuk class java.
wsimport otomatis tersedia jika kita sudah menginstall java jdk.

misal kita akan mengimport webservice : http://192.168.56.101:8888/reports/rwwebservice?wsdl

kita buat dulu direktori tempat kita mengimport webservice nya.

kemudian jalankan perintah wsimport dari command line :

$ wsimport -keep http://192.168.56.101:8888/reports/rwwebservice?wsdl



parameter -keep ini bersifat optional, untuk generate file *.java dan *.class juga.
jika kita tidak mencantumkan parameter ini maka yang digenerate hanya *.class saja.

Selanjutnya kita akan mempackage file-file hasil hasil import tadi menjadi sebuah library jar.
sehingga jar ini bisa kita reusable atau kita dapat gunakan dimanapun.

dengan perintah :

$ jar cfv nama_jar.jar -C directory_generated_wsdl/ .


selamat mencoba. :)