Hacking&Security Workshop

ตอนนี้ MaYaSeVeN ได้ย้าย Blog ไปที่ http://blog.mayaseven.com


Saturday, April 16, 2011

PicKKU 1.0 (Android App) + Source Code + Changelog + New Review

สำหรับ App นี้ประโยชน์ที่สำคัญกว่าเอาไว้ส่องสาวๆ คือ Source Code ที่มีหลาย Functions ที่สามารถนำไปประยุกต์ใช้กับงานของผู้อ่าน เช่น ตรวจสอบการเชื่อมต่อ Internet, QueryString, Imageview, Menu, Activity,Regex บลาๆๆ หาเอาใน Code ละกัน:D

Downloads : http://www.mediafire.com/?w6j7z9igndwiogb
MD5:fb291f3b17e940dc60f0af6ab6d3ff57
Sha1:66f8f3c896e1ec2344727f20d2357ed6a94158a0

Review:










Changelog :
0.เพิ่ม Function ตรวจสอบคณะที่ศึกษาอยู่(ยังไม่ 100%)
1.เพิ่ม Function check "-" (ต่อไปนี้จะใส่ - หรือไม่ใส่ก็ได้)
2.เพิ่มเมนู Save รูปไว้บน SDCard
3.เพิ่ม Function ตรวจสถานะการเชื่อมต่อ Internet
4.เพิ่ม Activity + Menu
5.เพิ่ม + แก้ไขอีกหลายอย่างลองดูจาก Code หรือทดสอบจากตัว App เอาละกัน :D
6.เพิ่ม Presenter คนใหม่เป็นคนที่รหัส น.ศ. == 1 (อาจจะเป็นนักศึกษาคนแรกของ มข. รึป่าว ?)

Source Code:

1.)Main.java
// Author: MaYaSeVeN
// Date: 16/4/2011
// Version: PicKKU 1.0
// Tested on: Google Nexus S

package com.PicKKU;

import com.PicKKU.R;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Main extends Activity {

 static EditText inputUrl;
 static Context context;

 public void onCreate(Bundle getpic) {
  super.onCreate(getpic);
  setContentView(R.layout.main);
  inputUrl = ((EditText) findViewById(R.id.editText1));
  inputUrl.setSingleLine();
  inputUrl.setTextSize(20);

  Button getImageButton = (Button) findViewById(R.id.button1);
  getImageButton.setOnClickListener(new OnClickListener() {

   public void onClick(View view) {

    Main.context = view.getContext();
    if (isConnected() != true) {
     Toast.makeText(Main.this, "Can't connect to the Internet",
       Toast.LENGTH_SHORT).show();
    } else if (inputUrl.getText().toString()
      .matches("(\\d{1,10})|(\\d{9}-\\d)")) {
     Intent i1 = new Intent(context, ShowPic.class);
     startActivityForResult(i1, 0);
    } else {
     Toast.makeText(Main.this, "Wrong student ID",
       Toast.LENGTH_SHORT).show();
    }
   }

  });

 }

 public boolean isConnected() {
  ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  return cm.getActiveNetworkInfo() != null;
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.layout.menu2, menu);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
  case R.id.exit:
   super.onDestroy();
   super.finish();
   return true;
  default:
   return super.onOptionsItemSelected(item);
  }
 }
}

2.)ShowPic.java
// Author: MaYaSeVeN
// Date: 16/4/2011
// Version: PicKKU 1.0
// Tested on: Google Nexus S

package com.PicKKU;

import java.io.File;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import com.PicKKU.R;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.Toast;

public class ShowPic extends Activity {

 private InputStream is;
 private String link;
 private String id;
 private ImageView imgView;

 public void onCreate(Bundle getpic) {
  super.onCreate(getpic);
  setContentView(R.layout.showpic);
  id = "" + Main.inputUrl.getText();
  link = "http://reg1.kku.ac.th/ephoto/getstudentimage.asp?id=" + id;
  link = checkInput();
  imgView = new ImageView(Main.context);
  imgView = (ImageView) findViewById(R.id.imageView1);
  imgView.setImageDrawable(ImageOperations());
  check_fac(id);

 }

 public void check_fac(String id) {
  if (id.length() > 9 && id.length() < 12) {
   if (id.substring(2, 5).equals("304")) {
    Toast.makeText(ShowPic.this, "Faculty of Engineering",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("308")) {
    Toast.makeText(ShowPic.this, "Faculty of HUSO",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("321")) {
    Toast.makeText(ShowPic.this, "Faculty of Management Science",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("506")) {
    Toast.makeText(ShowPic.this, "Faculty of Nursing",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("302")) {
    Toast.makeText(ShowPic.this, "Faculty of Medicine",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("321")) {
    Toast.makeText(ShowPic.this, "Faculty of Science",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("305")) {
    Toast.makeText(ShowPic.this, "Faculty of Education",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("315")) {
    Toast.makeText(ShowPic.this, "Faculty of Pharmacy",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("313")) {
    Toast.makeText(ShowPic.this, "Faculty of Dentist",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("316")) {
    Toast.makeText(ShowPic.this, "Faculty of Technology",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("303")) {
    Toast.makeText(ShowPic.this, "Faculty of Agriculture",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("309")) {
    Toast.makeText(ShowPic.this, "Faculty of Medical Technology",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("327")) {
    Toast.makeText(ShowPic.this, "Faculty of Medical Law",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("322")) {
    Toast.makeText(ShowPic.this, "Faculty of Medical Fine Art",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("329")) {
    Toast.makeText(ShowPic.this, "International College",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("328")) {
    Toast.makeText(ShowPic.this, "College of Local Administration",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("323")) {
    Toast.makeText(ShowPic.this, "Nongkhai Campus",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("311")) {
    Toast.makeText(ShowPic.this, "Faculty of Public Health",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("318")) {
    Toast.makeText(ShowPic.this, "Faculty of Veterinary Science",
      Toast.LENGTH_LONG).show();
   } else if (id.substring(2, 5).equals("320")) {
    Toast.makeText(ShowPic.this, " Faculty of Architecture",
      Toast.LENGTH_LONG).show();
   } else
    ;
  } else
   ;
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.layout.menu, menu);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
  case R.id.save:
   savePic();
   Toast.makeText(this, "Save in sdcard", Toast.LENGTH_SHORT).show();
   return true;
  case R.id.exit:
   super.onDestroy();
   super.finish();
   return true;
  default:
   return super.onOptionsItemSelected(item);
  }
 }

 private Drawable ImageOperations() {
  try {
   is = (InputStream) this.fetch(link);

   Drawable draw = Drawable.createFromStream(is, "src");
   return draw;
  } catch (MalformedURLException ev) {
   ev.printStackTrace();
   return null;
  } catch (IOException ev) {
   ev.printStackTrace();
   return null;
  }
 }

 private void savePic() {
  try {
   File SDCardRoot = Environment.getExternalStorageDirectory();
   File file = new File(SDCardRoot, id + ".jpg");
   FileOutputStream fileOutput = new FileOutputStream(file);
   byte[] buffer = new byte[1024];
   int bufferLength = 0;
   is = (InputStream) this.fetch(link);
   while ((bufferLength = is.read(buffer)) > 0) {
    fileOutput.write(buffer, 0, bufferLength);
   }
   fileOutput.close();
  } catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 private Object fetch(String address) throws MalformedURLException,
   IOException {
  URL url = new URL(address);
  Object content = url.getContent();
  return content;
 }

 private String checkInput() {
  if (id.length() > 9 && id.length() < 12) {
   if (link.lastIndexOf("-") != 61) {
    char last = link.charAt(61);
    link = link.substring(0, 61);
    link = (link + "-" + last);
   }
  }
  return link;
 }
}

3.)AndroidManifest.xml

 
 
 

  
  
   
    
    
   

  
  
 
 
 
 

4.)main.xml

 
 
 
 

5.)showpic.xml

      

6.)menu.xml

    
    

7.)menu2.xml

    

8.)strings.xml

    Input your student ID
    PicKKU
           GET IT!       




#เขียนโดย MaYaSeVeN http://mayaseven.blogspot.com
#Matches By @ptantiku
#อนุญาติให้ Copy ไปโพสที่ไหนก็ได้แต่ต้องแนบเครดิตด้วยนะครับ