Android Projects : Rename Files Extension
Author : Ishtek

    Using Android API level 7: This example is just for learning purpose only. This can not be treated as any recommendations at all.
In this writing, I shall try to demonstrate simple way of coding certain aspects of application development on Android Platform, such as: 1. Using spinner for dropdown option selector. 2. SharedPreference for storing few items in private mode for this application only. 3. Menu and MenuItem coding 4. Exit and dir menu item for closing this application and second activity respectively. 5. Adding and removing items to and from using sharedpreference. The application we are discussing on this page, is having following features: 1. select a particular folder/directory for all the files under this folder to be chnaged with a target extension as selected in the from extension drop-down.
2. Directory or folder to be added and removed using sharedpreference. Having menu items for exit only, 3. By entering a folder that will be used on the main activity/screen, 4. By long-pressing any list items, that item will be removed from the list, and it won't be visible in the drop-down spinner in the main activity. 5. If selected folder doesn't exist, then the 'renameith new extension' button will be disabled. 6. And if the folder exist, then this button will be enabled. 7. select from and to extensions for changing all files in the already selected folder under 'sdcard' external memory card. In this example We have two activities, ManageFiles and DirActivity, and layout xml files such as activity_manage_files.xml, dir_menu_layout.xml and dir_list_item.xml. To start with, the main Manifest XML file is having two activities and related permissions added:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.techienjoy" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".ManageFiles" android:label="@string/title_activity_manage_files" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".DirActivity"></activity> </application> </manifest>
Main Activity of this application has a layout with spinners, textview, buttons etc. please note that all text for the textview mentioned in this XML file should be written in the string.xml and used with the string id only.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <SurfaceView android:layout_width="fill_parent" android:layout_height="50dp" android:background="#7766ff" /> <SurfaceView android:layout_width="fill_parent" android:layout_height="20dp" android:background="#FFFFff" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="140dp" android:layout_height="wrap_content" android:text="@string/lblPath" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:textColor="#000000"/> <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:entries="@array/spinner1text" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="140dp" android:layout_height="wrap_content" android:text="@string/lblExt1" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:textColor="#000000"/> <Spinner android:id="@+id/spinner2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:entries="@array/spinner2text"/> </LinearLayout> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=""/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="140dp" android:layout_height="wrap_content" android:text="@string/lblExt2" android:textColor="#000000"/> <Spinner android:id="@+id/spinner3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:entries="@array/spinner3text" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/btChange" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lblBtConvert" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> <Button android:id="@+id/btClear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lblBtClear" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <TextView android:id="@+id/txt1" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <TextView android:id="@+id/txt2" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <TextView android:id="@+id/txt3" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18dp" android:textColor="#77aa66" android:text=" Please select/use Menu for adding folders !!!"/> </LinearLayout>
string.xml file has many entries as follows:
<resources> <string name="app_name">ManageFiles</string> <string name="menu_settings">Settings</string> <string name="dir">DIR</string> <string name="toExt">To Extension</string> <string name="fromExt">From Extension</string> <string name="exit">Exit</string> <string name="title_activity_manage_files">Manage Files</string> <string name="lblPath">Select Path/Folder :</string> <string name="lblExt1">From File Extension :</string> <string name="lblExt2">To File Extension :</string> <string name="lblBtConvert">Rename with new extension</string> <string name="lblBtClear">Clear</string> </resources>
<resources> <string-array name="spinner1text"> <item></item> </string-array> <string-array name="spinner2text"> <item>.jpg</item> <item>.java</item> <item>.mp4</item> <item>.png</item> <item>.flv</item> </string-array> <string-array name="spinner3text"> <item>.jpg</item> <item>.java</item> <item>.mp4</item> <item>.png</item> <item>.flv</item> </string-array> </resources>
As you might have noticed in the resources tag above, is having prepopulated values for spinner2text and spinner3text. But spinner1text is dynamically loaded at runtime. Value for this spinner spinner1text would be populated from sharedpreference with the values for the directory values. The MainActivity code is having various aspects such as follows:
/** * This code is provided on 'AS IS' basis without guaranty or warranty od any sort. * Use at you own risk only. * @Author: Ishtek * @Contact: usingframeworks@gmail.com * @date: 10-Nov-2013 */ package com.techienjoy; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; public class ManageFiles extends Activity { private DropDownAdapter ddAdaptor; private SharedPreferences sharedPref; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_manage_files); final Spinner edtText1 = (Spinner) findViewById(R.id.spinner1); final Spinner edtExt1 = (Spinner) findViewById(R.id.spinner2); final Spinner edtExtTo = (Spinner) findViewById(R.id.spinner3); sharedPref = getSharedPreferences("managefiles", Context.MODE_PRIVATE); String dirList = sharedPref.getString("managefiles", ""); ddAdaptor = new DropDownAdapter(getApplicationContext(), new ArrayList()); StringTokenizer st = new StringTokenizer(dirList,":"); while(st.hasMoreTokens()) { String nextToken = st.nextToken(); TextView txtView = new TextView(getApplicationContext()); txtView.setTextColor(Color.BLACK); txtView.setText(nextToken); ddAdaptor.add(nextToken); } edtText1.setAdapter(ddAdaptor); final Button btConvert = (Button) findViewById(R.id.btChange); Button btClear = (Button) findViewById(R.id.btClear); //This 'Rename...blahblah' button will remain disabled untill an appropriate //existing folder/directory is choosen in the first dropdown spinner component. btConvert.setEnabled(false); edtText1.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent arg1) { ddAdaptor.clear(); ddAdaptor.notifyDataSetChanged(); String dirList = sharedPref.getString("managefiles", ""); StringTokenizer st = new StringTokenizer(dirList,":"); while(st.hasMoreTokens()) { String nextToken = st.nextToken(); TextView txtView = new TextView(getApplicationContext()); txtView.setTextColor(Color.BLACK); txtView.setText(nextToken); ddAdaptor.add(nextToken); } ddAdaptor.notifyDataSetChanged(); return false; } }); edtText1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { File file = new File(arg0.getSelectedItem().toString()); if(file.isDirectory()) { btConvert.setEnabled(true); } if(!file.isDirectory()) { btConvert.setEnabled(false); } file = null; } @Override public void onNothingSelected(AdapterView<?> arg0) { File file = new File(arg0.getSelectedItem().toString()); if(file.isDirectory()) { btConvert.setEnabled(true); } if(!file.isDirectory()) { btConvert.setEnabled(false); } file = null; } }); btClear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { } }); btConvert.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { try { File file = new File(edtText1.getSelectedItem().toString()); if(file.isDirectory()) { File[] files = file.listFiles(new FilenameFilter() { @Override public boolean accept(File arg0, String arg1) { if(arg1.toLowerCase().endsWith(edtExt1.getSelectedItem().toString())) { return true; } else { return false; } } }); for(int i=0;i<files.length;i++) { files[i].renameTo(new File(edtText1.getSelectedItem().toString()+files[i] .getName().substring(0, files[i].getName() .indexOf(".")) +edtExtTo.getSelectedItem().toString())); } Toast.makeText(getApplicationContext(), "Done..."+files .length, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(),edtText1.getSelectedItem().toString() +" not a Directory", Toast.LENGTH_SHORT).show(); } } catch (Exception ex) { Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_SHORT).show(); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_manage_files, menu); MenuItem dirMenu = menu.getItem(0); if(dirMenu != null) { dirMenu.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { Intent intent= new Intent(ManageFiles.this, DirActivity.class); startActivity(intent); return true; }}); } MenuItem exitMenu = menu.getItem(3); exitMenu.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem arg0) { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); return true; } }); return true; } } class DropDownAdapter extends ArrayAdapter { public DropDownAdapter(Context ctx, List list) { super(ctx,R.layout.dir_list_item,list); } }
If you are testing this application in an emulator environment, then you have to use sdcard option with some initial capacity/size. For the Menu Item 'dir', on click of this item, another activity is opened, which is having a layout as follows:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <SurfaceView android:layout_width="fill_parent" android:layout_height="50dp" android:background="#7766ff"/> <SurfaceView android:layout_width="fill_parent" android:layout_height="20dp" android:background="#FFFFff"/> <TextView android:id="@+id/txtMenuDir" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Enter Folder/Path:"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="/sdcard/" android:textColor="#000000" android:textSize="24dp" android:textStyle="bold"/> <EditText android:id="@+id/menuEdtTxt" android:layout_width="200dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/txtMenuDir"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/butnDir" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" Add " android:layout_below="@+id/menuEdtTxt"/> <Button android:id="@+id/butnBack" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" Back " android:layout_below="@+id/menuEdtTxt"/> </LinearLayout> <TextView android:id="@+id/lstTxt" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"> </ListView> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Please Long-Press List Item To delete it"/> </LinearLayout>
This DirActivity is having code as follows:
/** * This code is provided on 'AS IS' basis without guaranty or warranty od any sort. * Use at you own risk only. * @Author: Ishtek * @Contact: usingframeworks@gmail.com * @date: 10-Nov-2013 */ package com.techienjoy; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import android.app.Activity; import android.app.ListActivity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; /** * This class is used for the DIR/folder selection page/screen of this application */ public class DirActivity extends ListActivity { private ListView listView; private SharedPreferences sharedPref; String dirList = null; @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.dir_menu_layout); listView = getListView(); final DirAdapter dirAdapter = new DirAdapter(this, new ArrayList()); sharedPref = getSharedPreferences("managefiles", Context.MODE_PRIVATE); Button butnSave = (Button) findViewById(R.id.butnDir); final EditText txtDir = (EditText) findViewById(R.id.menuEdtTxt); dirList = sharedPref.getString("managefiles", ""); dirAdapter.clear(); dirAdapter.notifyDataSetChanged(); StringTokenizer st = new StringTokenizer(dirList,":"); while(st.hasMoreTokens()) { String nextToken = st.nextToken(); dirAdapter.add(nextToken); } dirAdapter.notifyDataSetChanged(); /** * This onclicklistener is going to retrive sharepreference string * add another string to the original ':' separated string, and * then call appropriate notify method on the adaptor for refreshing * listview content as appropriate. */ butnSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { if(sharedPref != null) { dirList = sharedPref.getString("managefiles", ""); String dirTxt = "/sdcard/"+txtDir.getText().toString(); if(!dirTxt.endsWith("/")) { dirTxt=dirTxt+"/"; } if(dirList.equals("")) { SharedPreferences.Editor editor = sharedPref.edit(); editor.putString("managefiles", dirTxt); editor.commit(); } else { if(!checkDuplicate(dirList, dirTxt)) { SharedPreferences.Editor editor = sharedPref.edit(); editor.putString("managefiles", dirList+":"+dirTxt); editor.commit(); } } } dirAdapter.clear(); dirAdapter.notifyDataSetChanged(); dirList = sharedPref.getString("managefiles", ""); StringTokenizer st = new StringTokenizer(dirList,":"); while(st.hasMoreTokens()) { String nextToken = st.nextToken(); dirAdapter.add(nextToken); } dirAdapter.notifyDataSetChanged(); } }); //This button is for tarting ManageFiles mome screen as intent from the //diractivity when back button is clicked. Button butnBack = (Button) findViewById(R.id.butnBack); butnBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent intent= new Intent(DirActivity.this,ManageFiles.class); startActivity(intent); } }); setListAdapter(dirAdapter); // Following code is for achieving menu item long click delete action getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, long arg3) { dirList = deleteItem(dirList,position); Toast.makeText(getApplicationContext(), dirList, Toast.LENGTH_SHORT); Editor editor = sharedPref.edit(); editor.putString("managefiles",dirList); editor.commit(); dirList = sharedPref.getString("managefiles", ""); dirAdapter.clear(); dirAdapter.notifyDataSetChanged(); StringTokenizer st = new StringTokenizer(dirList,":"); while(st.hasMoreTokens()) { String nextToken = st.nextToken(); dirAdapter.add(nextToken); } dirAdapter.notifyDataSetChanged(); return true; } /** * This method is used for removing a string value from another ':' separated * string. */ private String deleteItem(String dirList, int position) { String tmpStr = ""; StringTokenizer st = new StringTokenizer(dirList,":"); int i=0; while(st.hasMoreTokens()) { String temp1 = st.nextToken(); if(position != i) { tmpStr = tmpStr+temp1+":"; } i++; } return tmpStr; } }); } /** * This method is overridden for enabling menu options with appropriate * layout for menu. * */ @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.dir_menu_items, menu); MenuItem exitMenu = menu.getItem(0); exitMenu.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem arg0) { // By checking whether the exit menu item is clicked and if clicked //create an intent for closing this application by starting Action Home //intent. Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); return true; } }); return true; } /** * Check for duplicate string for 'toFound' within another ':' separated * string 'str' and return true if present and false otherwise. */ private boolean checkDuplicate(String str, String toFound){ StringTokenizer st = new StringTokenizer(str,":"); while(st.hasMoreTokens()) { String nextToken = st.nextToken(); if(nextToken != null && nextToken.equals(toFound)) { return true; } } return false; } } /** * This class is used by List for providing a layout as defined in the * dir_list_item.xml file, placed in the folder res/layout folder. */ class DirAdapter extends ArrayAdapter { public DirAdapter(Context ctx, List list) { super(ctx,R.layout.dir_list_item,list); } }
Four icons used to populate menu item with images/icons are shown below: I am still working on this example to make this application more interesting by adding some more features to it by including screens for setting from and to extensions with two more activities and screens, so as to facilitate addition of more extensions for files. If you are testing this code on a real device on Android Platform, please do take appopriate backups of your files, as this application is not keeping any backup copies of your files, so it would be hard to bring back any lost/renamed files if you want to undo any of this application execution. As there is no 'UNDO' option available with this application as of now. And please be aware that this application is not at all changing content of any files to make it compatible with the target extension, instead this is just renaming all files with a particular extension to another extension without touching any of the content of the targetted file(s) in a selected folder of the external memory card (or SDCARD). For any issues you may discuss on this page by using following feedback form.
If interested in commenting related to Android Project with Example
Click Here

Name (To be shown on this Page:*

Email (Not to be shown):*

Website (To be shown on this Page)

Your Comments here (To be shown on this Page):*

(You can use <a> Tag in your comments)

Please enter same number as shown here 604




Android Thread Example

REST Interview Questions

JAX-WS Webservice Example

Android Overlap SurfaceView Example

Spring3 Integration of File Endpoint

JAXWS Webservice Example

Android WebView Example

Android Context Menu Example

Setting up Eclipse for Android App Development

Android SensorEvent Orientation Example

Android ImageSwitcher Example

REST API Design for Android App

Android ExpandableListView Example

Singleton Serializable on Android

Android GPS with Google MAP Example

Android Project With Example

Android Project Manageing Files

Project Ideas for App on Android Platform

Android EditText with Background

Android SQLite Database Example

Android AutoCompleteTextView Example

Android Tester

Android Interview Questions

Android ListView Example

Android Intent Notification Example

Android Intent Broadcast Example

Android TextView Link Example

Android Sensor List

Android Sensor Orientation Example

Android Intent Broadcast Receiver

Android Gallery SurfaceViews Example

Android Location Example

Android Text to Speech Example

Android Intent Example

Android Layout Example

Android Download File Example

Android Expandable ListView Example

Android Tab Example

Android RelativeLayout Example

Android Intent Example

Android Text to Speech Example

Android SQLite Example

Android CustomView Example

Android Canvas Example

Android SharedPreferences Example

Android Shape Background Example

Android ShapeButton Example

Android ViewFlipper Example

Android Gallery Example

Android TimePickerDialog Example





If interested commenting on this Page :

comments powered by Disqus
Any source code found on any of the page(s) in Techiecommunity.net is associated with following notice: 
   /*
     * TECHIECOMMUNITY.NET MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
     * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
     * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
     * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. TECHIECOMMUNITY.NET SHALL NOT BE LIABLE FOR
     * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
     * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
     *
     * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
     * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
     * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
     * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
     * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
     * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
     * PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). TECHIECOMMUNITY.NET
     * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
     * HIGH RISK ACTIVITIES.
     */
   
The content provided in this page is NOT warranted and/or NOT guaranteed by techiecommunity.net .
techiecommunity.net is not liable for any negative consequences that may result/arise from 
implementing directly/indirectly any information covered in these pages/articles/tutorials.

For any of the content, if you would like to bring it to notice for removal from this web site, 
please write to this web site administrator @ EMAIL-ID (please remove space before and after @),
with appropriate concern and supporting proof(s). After thorough review and if found genuine concern,
we would take appropriate action and remove disputed content from this web site within 24 hours 
starting from the time it has brought to techiecommunity.net Administrator notice.

This website uses cookies and third party cookies to improve the user experience. 
And to provide more relevant ads. 
In case of continued use of this website implies that you accept the use of cookies on this website.
		
While using this web site, you agree to have read and accepted techiecommunity.net terms of use and privacy policy.