A Guide to Mobile and Web Technology(LAMP)

Posts tagged ‘Android’

How to make a call automatically on Android

The following code shows how to make phone calls (ie) launch the default phone dialer with the specified number in Android.

String data = "012034034"; //Phone Number

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(data));

this.startActivity(intent);
Advertisements

Database Manipulations in Android

The following code snippets heps you to manipulate database operations in Android.

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class UserDatabase{
	
    //Database Related Constants
    public static final String KEY_ROWID = "id";
    public static final String KEY_NAME = "name";
    public static final String KEY_PASSWD = "password";
    
    private static final String DATABASE_NAME = "UserDB";
    private static final String DATABASE_TABLE = "usertable";
    private static final int DATABASE_VERSION = 1;

    long id;
    Cursor c;

    private static final String DATABASE_CREATE =
        "create table "+DATABASE_TABLE+" (id integer primary key autoincrement, "
         +KEY_NAME+" text not null,"+KEY_PASSWD+" text not null);";

    private  final Context context;
    private DatabaseHelper DBHelper;
    private SQLiteDatabase sqlitedatabase;

    public UserDatabase(Context ctext){
    	context = ctext;    	
    }
    
    //Used to check and insert username and password in android's sqlite table
    public void insertUserDetails(String username, String password){
    	try {
			boolean isuserexists = false;
			//check whether the username has an entry already
			isuserexists = checkUserExists(username);
			DBHelper = new DatabaseHelper(context);
			sqlitedatabase = DBHelper.getWritableDatabase();
			
		       //insert the username and password in tables 
			if(isuserexists == false)	
				insertRow(username, password);
		    
			sqlitedatabase.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
    }
    
    
    //Function used to check whether a entry with same username available   
    public boolean checkUserExists(String username){
    	boolean userexists = false;
    	try {
			DBHelper = new DatabaseHelper(context);
			sqlitedatabase = DBHelper.getWritableDatabase();
			
			Cursor c = sqlitedatabase.rawQuery("select * from "+DATABASE_TABLE+" where "+KEY_NAME+"='"+username+"'", null);

			if (c.moveToFirst())
			{
			     do {
			    	 int index = c.getColumnIndex(KEY_NAME);
		     		 String name = c.getString(index);
		     		 if(username.equalsIgnoreCase(name)){
		     			 userexists = true;
		     			 sqlitedatabase.close();
		     			 return userexists;
		     		 }
			     } while (c.moveToNext());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}   
		sqlitedatabase.close();
    	return userexists;
    }
    
    //Function used to update the password for the specified username
    public void update_table(String name, String password){    	
    	try {
			DBHelper = new DatabaseHelper(context);
			sqlitedatabase = DBHelper.getWritableDatabase();			
			sqlitedatabase.execSQL("update "+DATABASE_TABLE+" set "+KEY_PASSWD+"='"+password+"' where "+KEY_NAME+"='"+name+"'");
			sqlitedatabase.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}   
    }
    
    
    //Database Helper Class
    private static class DatabaseHelper extends SQLiteOpenHelper
    {
        DatabaseHelper(Context context)
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        public void onCreate(SQLiteDatabase db)
        {
        	db.execSQL(DATABASE_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {        	
            db.execSQL("DROP TABLE IF EXISTS titles");
            onCreate(db);
        }
    }

    public long insertRow(String name, String password)
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_NAME, name);
        initialValues.put(KEY_PASSWD, password);
        return sqlitedatabase.insert(DATABASE_TABLE, null, initialValues);
    }

    public Cursor getAllRows()
    {
        return sqlitedatabase.query(DATABASE_TABLE, new String[] {
                        KEY_ROWID, KEY_NAME, KEY_PASSWD},
                null, null, null, null, null);
    }

}

Upload files from Mobile using Android

create a folder name uploads with 777 permission.

create a file name upload.php in the same folder where the uploads folder is created.

Place the code in the file named upload.php


$target_path = "uploads/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']).
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}

Client side code that is used to send file to a server. please include the following code in our client program.


private void doFileUpload(){

  HttpURLConnection conn = null;
  DataOutputStream dos = null;
  DataInputStream inStream = null;

 // The full path of filename which is to be uploaded to server
  String exsistingFileName = "test.mp3";
 
  String lineEnd = "\r\n";
  String twoHyphens = "--";
  String boundary =  "*****";


  int bytesRead, bytesAvailable, bufferSize;

  byte[] buffer;

  int maxBufferSize = 1*1024*1024;


  String responseFromServer = "";

  //Server path to the upload.php
  String urlString = "http://xxx.xxx.xxx.xxx/upload.php";


  try
  {
   //------------------ CLIENT REQUEST

  FileInputStream fileInputStream = new FileInputStream(new File(exsistingFileName) );

   // open a URL connection to the Servlet

   URL url = new URL(urlString);


   // Open a HTTP connection to the URL

   conn = (HttpURLConnection) url.openConnection();

   // Allow Inputs
   conn.setDoInput(true);

   // Allow Outputs
   conn.setDoOutput(true);

   // Don't use a cached copy.
   conn.setUseCaches(false);

   // Use a post method.
   conn.setRequestMethod("POST");

   conn.setRequestProperty("Connection", "Keep-Alive");

   conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);

   dos = new DataOutputStream( conn.getOutputStream() );

   dos.writeBytes(twoHyphens + boundary + lineEnd);
   dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + exsistingFileName +"\"" + lineEnd);
   dos.writeBytes(lineEnd);

   System.out.println("Headers are written");

   // create a buffer of maximum size

   bytesAvailable = fileInputStream.available();
   bufferSize = Math.min(bytesAvailable, maxBufferSize);
   buffer = new byte[bufferSize];

   // read file and write it into form...

   bytesRead = fileInputStream.read(buffer, 0, bufferSize);

   while (bytesRead > 0)
   {
    dos.write(buffer, 0, bufferSize);
    bytesAvailable = fileInputStream.available();
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
   }

   // send multipart form data necesssary after file data...

   dos.writeBytes(lineEnd);
   dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

   // close streams
   System.out.println("File is written");
   fileInputStream.close();
   dos.flush();
   dos.close();


  }
  catch (MalformedURLException ex)
  {
      System.out.println(ex.toString());
  }

  catch (IOException ioe)
  {
      System.out.println(ioe.toString());
  }


  //------------------ read the SERVER RESPONSE


  try {
        inStream = new DataInputStream ( conn.getInputStream() );
        String str;
      
        while (( str = inStream.readLine()) != null)
        {
            //the str contains the server response   
         System.out.println("Server Response"+str);
        }
        inStream.close();   
  }
  catch (IOException ioex){
       System.out.println(ioe.toString());
  }

}

If the file is sucessfully uploaded the response will be

The file test.mp3 has been uploaded.

otherwise the response will be

There was an error uploading the file, please try again!

How to send Sms from Android Programatically

The following lines of code are used to send sms from android phones. This will launch the default sms intent with a message

“Hi this is test sms”

and allows to enter the phone number and edit the message if necessary!

//call the default intent to launch message compose page

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
//use to fill the sms body
sendIntent.putExtra("sms_body", "Hi this is test sms"); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);