Explain in brief about the important file and folder when you create new android application.When you create android application the following folders are created in the package explorer in eclipse which are as follows:
src: Contains the .java source files for your project. You write the code for your application in this file. This file is available under the package name for your project.
gen: This folder contains the R.java file. It is compiler-generated file that references all the resources found in your project. You should not modify this file.
Android 4.0 library: This folder contains android.jar file, which contains all the class libraries needed for an Android application.
assets: This folder contains all the information about HTML file, text files, databases, etc.
bin: It contains the .apk file (Android Package) that is generated by the ADT during the build process. An .apk file is the application binary file. It contains everything needed to run an Android application.
res: This folder contains all the resource file that is used by android application. It contains subfolders as: drawable, menu, layout, and values etc.
Explain AndroidManifest.xmlfile in detail.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.careerride" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" />
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
<activity android:name="com.example.careerride.MainActivity" android:label="@string/app_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
The AndroidManifest.xml file contains the following information about the application:
- It contains the package name of the application.
- The version code of the application is 1.This value is used to identify the version number of your application.
- The version name of the application is 1.0
- The android:minSdkVersion attribute of the element defines the minimum version of the OS on which the application will run.
- ic_launcher.png is the default image that located in the drawable folders.
- app_name defines the name of applicationand available in the strings.xml file.
- It also contains the information about the activity. Its name is same as the application name.
Describe android Activities in brief.
Activity provides the user interface. When you create an android application in eclipse through the wizard it asks you the name of the activity. Default name is MainActivity. You can provide any name according to the need. Basically it is a class (MainActivity) that is inherited automatically from Activity class. Mostly, applications have oneor more activities; and the main purpose of an activity is to interact with the user. Activity goes through a numberof stages, known as an activity’s life cycle.Example:
packagecom.example.careerride; //Application name careerride
importandroid.os.Bundle; // Default packages
importandroid.app.Activity; // Default packages
public class MainActivity extends Activity
protected void onCreate(Bundle savedInstanceState)
// Inflate the menu; this adds items to the action bar if it is present.
When you run the application onCreate method is called automatically.
Describe Intents in detail.
An Android application can contain zero or more activities. If you want to navigate fromone activity to another then android provides you Intent class. This class is available inandroid.content.Intent package.One of the most common uses for Intents is to start new activities.
There are two types of Intents.
1) Explicit Intents
2) Implicit Intents
Intents works in pairs: actionand data. The action defines what you want to do, such as editing an item, viewingthe content of an item etc. The dataspecifies what is affected,such as a person in the Contacts database. The data is specified as anUri object.Explicitly starting an Activity
Intent intent = newIntent (this, SecondActivity.class);
Here SecondActivity is the name of the target activity that you want to start.Implicitly starting an Activity
If you want to view a web page with the specified URL then you can use this procedure.
Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));
if you want to dial a telephone number then you can use this method by passing the telephone number in the data portion
Intent i = newIntent (android.content.Intent.ACTION_DIAL,Uri.parse(“tel:+9923.....”));
In the above method the user must press the dial button to dial the number. If you want to directly call the number without user intervention, change the action as follows:
Intent i = newIntent (android.content.Intent.ACTION_CALL,Uri.parse(“tel:+9923.....”));
If you want to dial tel no or use internet then write these line in AndroidManifest.xml
How to send SMS in android? Explain with example.
SMS messaging is one of the basic and important applications on a mobile phone. Now days every mobile phone has SMS messaging capabilities, and nearly all users of any age know how to send and receive such messages. Mobile phones come with a built-in SMS application that enables you to send and receive SMS messages. If you want to send the SMS programmatically then follow the following steps.Sending SMS Messages Programmatically
Take a button on activity_main.xml file as follows.
<Button android:id="@+id/btnSendSMS" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:onClick=”sendmySMS” android:text="sendSMS" />
According to above code when user clicks the button sendmySMS method will be called. sendmySMS is user defined method.
In the AndroidManifest.xml file, add the following statements
Now we write the final step. Write the given below method in MainActivity,java file
SmsManagersms = SmsManager.getDefault();
sms.sendTextMessage("5556", null, "Hello from careerRide", null, null);
In this example I have used two emulator. On the first Android emulator (5554), click the Send SMSbutton to send an SMS message to the second emulator(5556).
Describe the SmsManager class in android.
SmsManager class is responsible for sending SMS from one emulator to another or device.
You cannot directly instantiate this class; instead, you call the getDefault() static method to obtain an SmsManager object. You then send the SMS message using the sendTextMessage() method:
SmsManagersms = SmsManager.getDefault();sendTextMessage() method takes five argument.
sms.sendTextMessage("5556", null, "Hello from careerRide", null, null);
- destinationAddress — Phone number of the recipient.
- scAddress — Service center address; you can use null also.
- text — Content of the SMS message that you want to send.
- sentIntent — Pending intent to invoke when the message is sent.
- deliveryIntent — Pending intent to invoke when the message has been delivered.
How you can use built-in Messaging within your application?
You can use an Intent object to activate the built-in Messaging service. You have to pass MIME type “vnd.android-dir/mms-sms”, in setType method of Intent as shown in the following given below code.
Intent intent = new Intent (android.content.Intent.ACTION_VIEW);
intent.putExtra("address", "5556; 5558;");// Send the message to multiple recipient.
itent.putExtra("sms_body", "Hello my friends!");
What are different data storage options are available in Android?Different data storage options are available in Android are:
- File Storage
- Cloud Storage
Describe SharedPreference storage option with example.
SharedPreference is the simplest mechanism to store the data in android. You do not worry about creating the file or using files API.It stores the data in XML files. SharedPreference stores the data in key value pair.The SharedPreferences class allows you to save and retrieve key-value pairs of primitive data types. You can use SharedPreferences to save any primitive data: boolean, floats, int, longs, and strings.The data is stored in XML file in the directory data/data//shared-prefs folder.Application of SharedPreference
- Storing the information about number of visitors (counter).
- Storing the date and time (when your Application is updated).
- Storing the username and password.
- Storing the user settings.
Example:For storing the data we will write the following code in main activity on save button:
SharedPreferences sf=getSharedPreferences("MyData", MODE_PRIVATE);
In this example I have taken two activities. The first is MainActivity and the second one is SecondActivity.When user click on save button the user name and password that you have entered in textboxes, will be stored in MyData.xml file.
Here MyData is the name of XML file .It will be created automatically for you.
MODE_PRIVATE means this file is used by your application only.
txtusernameand txtpassword are two EditText control in MainActivity.For retrieving the data we will write the following code in SecondActiviy when user click on Load button:
Public static final String DEFAULT=”N? A”;
DEFAULT is a String type user defined global variable.If the data is not saved in XML file and user click on load button then your application will not give the error. It will show message “No Data is found”. Here name and pass are same variable that I have used in MainActivity.
SharedPreferences sf=getSharedPreferences("MyData", Context.MODE_PRIVATE);
String Uname=sf.getString("name", DEFAULT);
String UPass=sf.getString("pass", DEFAULT);
Toast.makeText(this, "No data is found", Toast.LENGTH_LONG).show();
What are the key components of Android Architecture?Android Architecture consists of 4 key components:
- Linux Kernel
- Android Framework
- Android Applications
What are the advantages of having an emulator within the Android environment?- The emulator allows the developers to work around an interface which acts as if it were an actual mobile device.
- They can write, test and debug the code.
- They are safe for testing the code in early design phase
Tell us something about activityCreator?- An activityCreator is the initial step for creation of a new Android project.
- It consists of a shell script that is used to create new file system structure required for writing codes in Android IDE.
What do you know about Intents?- Notification messages to the user from an Android enabled device can be displayed using Intents. The users can respond to intents.
- There are two types of Intents - Explicit Intent, Implicit Intent.
What is an Explicit Intent?- Explicit intent specifies the particular activity that should respond to the intent.
- They are used for application internal messages.
What is an Implicit Intent?- In case of Implicit Intent, an intent is just declared.
- It is for the platform to find an activity that can respond to it.
- Since the target component is not declared, it is used for activating components of other applications.
What do intent filters do?- There can be more than one intents, depending on the services and activities that are going to use them.
- Each component needs to tell which intents they want to respond to.
- Intent filters filter out the intents that these components are willing to respond to.
Where are lay out details placed? Why?- Layout details are placed in XML files
- XML-based layouts provide a consistent and standard means of setting GUI definition format.
What do containers hold?- Containers hold objects and widgets in a specified arrangement.
- They can also hold labels, fields, buttons, or child containers. .
What is Orientation?- Orientation decides if the LinearLayout should be presented in row wise or column wise fashion.
- The values are set using setOrientation()
- The values can be HORIZONTAL or VERTICAL
What is it important to set permissions in app development?- Certain restrictions to protect data and code can be set using permissions.
- In absence of these permissions, codes could get compromised causing defects in functionality.
What is AIDL?- AIDL is the abbreviation for Android Interface Definition Language.
- It handles the interface requirements between a client and a service to communicate at the same level through interprocess communication.
- The process involves breaking down objects into primitives that are Android understandable.
What data types are supported by AIDL?AIDL supports following data types:
-all native Java data types like int,long, char and Boolean
Tell us something about nine-patch image.- The Nine-patch in the image name refers to the way the image can be resized: 4 corners that are unscaled, 4 edges that are scaled in 1 axis, and the middle one that can be scaled into both axes.
- A Nine-patch image allows resizing that can be used as background or other image size requirements for the target device.
Which dialog boxes are supported by android?Android supports 4 dialog boxes:
a.) AlertDialog: Alert dialog box supports 0 to 3 buttons and a list of selectable elements which includes check boxes and radio buttons.
b.) ProgressDialog: This dialog box is an extension of AlertDialog and supports adding buttons. It displays a progress wheel or bar.
c.) DatePickerDialog: The user can select the date using this dialog box.
d.) TimePickerDialog: The user can select the time using this dialog box.
What is Dalvik Virtual Machine?- It is Android's virtual machine.
- It is an interpreter-only virtual machine which executes files in Dalvik Executable (.dex) format. This format is optimized for efficient storage and memory-mappable execution.
What are the steps that are involved in converting the android in newer version?To release a new version requires lots of changes and a process has to be developed to build the changes. The steps that is required:
1) In the beginning of the creation the software gets the built or the earlier version of the system image. This includes various certifications and deployment rules and regulations.
2) The built goes through operator testing and this is one of the important phase as it allows lot of bugs to be found and corrected.
3) The release then goes the regulators, moderators and operators to produce the devices to release the source code. The code that is written is checked for errors and there is a sign of the agreement that take place between the contributors and some verification are performed.
4) The production of the software begins and the release process starts and then the release will allow the users to grab the devices.
What is the role of compatibility that is used in Android?- The compatibility is defined in terms of android compatible devices that run any application. This application is written by third party developers using the Android platform that comes in the form of SDK and NDK.
- There are many filters that are used to separate devices that are there to participate in the compatibility mode for the Android applications. The devices that are compatible require the android to approve it for their trademark. The devices that are not passes the compatibility are just given in the Android source code and can use the android trademark.
- The compatibility is a way through which the user can participate in the Android application platform. The source code is free to use and it can be used by anyone.
What are the different forms of communication provided by the Android applications?There are different forms of communication that is used by the Android application developers like:
1) Internet telephony: This is used to add SIP-based features to the application. This includes the full SIP protocol stack and includes integrated call management services. These services allow setting the ongoing and incoming voice calls without managing the sessions at the transport level. This provides the communication to be successful by determining the associated carriers.
2) NFC (Near field communications): This is used to allow the communication to happen between the developers that create the new class of application. These new applications are created and provided as a service to the users, organizations, merchants and advertisers. It allows the tagging of application that interests the user. The tag allows the user to communicate through wireless telephony services and allow the use of device hardware.
What are the multimedia features involved in making Android popular?There is the demand for the rich multimedia that involves many features that are used till now to make the Android market more popular in all the phases. The application includes the following:
- Mixable audio effects – developer can easily create audio environments using the API key that is provided with it like creating equalization, bass boost, headphone feature, etc. The android provide the tools that can be used to mix the audio effects and apply it.
- There is also support for new media formats like VP8 open video compression format that uses a container format that can run on all the platforms and add the support for AAC and AMR encoding. The applications provided allow higher quality video to be captured.
- The application allows the access to multiple cameras that allows the use of APIs to include the camera and its properties in one. The platform provides the application to include the camera with high and low resolution.
What are the services that can be allowed to run in a single process?- Android allows all the services and applications to run on a single process. This behavior is the default behavior that can be changed by using the different settings and functions.
- The process can be declared by using android: process attribute. This places the component explicitly on the process. Service is not a separate process and itself it’s a process if not defined separately.
- The service is not used as a thread as well but it defines other threads in the program to do the work and create the application.
- The application runs and finds the errors in the program and the service just takes the necessary actions on them. The service also responds to the errors whenever necessary.
What are the steps that are required in Service Lifecycle?The services allow the proper functioning of the system.
- The service starts with Context.startService() function and the system will retrieve the service using onCreate() method. To start the service it calls on onStartCommand(Intent, int, int)method with proper arguments that are given by the client.
- If the service is running and due to some problem the user doesn't want to run it then it uses Context.stopService()or stopSelf() method to properly implement the service for the user.
- Due to multiple calls of the Context.startService() method the program doesn't do any nesting of the program and shows the stopping of the services.
- Services can use the command stopSelf(int)method to stop their own service. A service doesn't stop untill all the processes are processed.
What are the different modes of operations used in services for Android?There are two modes of operations that are necessary to run depending on the value returned by the startcommand(). The modes are as follows:
- START_STICKY: this mode is used for the services that are explicitly started and stopped according to the need and the requirement of the user.
- START_NOT_STICKY or START_REDELIEVER_INTENT: this service mode is used for services that are running only when the processing command sent to them. That means these run on the basis of the command that is passed to them by giving the instruction of execution.
- Clients uses the Context.bindService() that is used to get the persistent connection for a service. To create a service that is not already running the command onCreate is used.
What is the main reason of using process lifecycle in Android?The android system will keep all the process that are hosting the services together at one place till the time the service is not started or connected to the client. The priority of the process is divided when running low on memory or when the process has to be killed.
The process lifecycle is as follows:
- The service is running currently then the methods onCreate(), onStartCommand(), and onDestroy()methods, will run in the foreground to execute the process without being killed.
- The service is already started then the process can be considered as less important then the processes that are currently visible and used. This is done as there are only few processes that are visible to the users on the screen.
- The clients are bounded to the services they are providing requires more priority in the execution list.
- The service that is started uses startForeground(int, Notification)API to allow all the services to run in the foreground state. The system considers only the services where the user is still active as the services not to be killed.
How all the activities that are running run in main thread?All the applications that are running or can be accessed runs in main thread of user interface by default. The modification can be done to make it run differently or to make it run or not at all. The exception also comes defining that the code handles the IPC calls that are coming from other processes. The system used to maintain separate pools for all the processes and threads. One pool consists of the transaction threads that are in each process to dispatch all the incoming calls. It also allows the interpersonal calls to be handled in a specialized manner. This allows the creation of separate threads that is used for long-running code, and to avoid blocking of the main user interface threads. The services that run can be killed by the system if it is going out of memory. The system restart the service and implement onStartCommand() to bring the activities back in the memory pool.
What are the different data types used by Android?The data can be passed between many services and activities using the following data types:
- Primitive Data Types: are used to share the activities and services of an application by using the command as Intent.putExtras(). This primitive data passes the command to show the persistent data using the storage mechanism. These are inbuilt data types that are used with the program. They provide simple implementation of the type and easy to use commands.
- Non-Persistent Objects: are used to share complex and non-persistent objects. These are user-defined data types that are used for short duration and are also recommended to be used. These types of objects allow the data to be unique but it creates a complex system and increase the delay.
What are the different approaches that are required to share the objects?There are several types of approaches that are required to share the objects and all of them are listed below:
- Singleton class: is used for the application components that run in the same process. This allows the design to run only one instance at a time. It includes static methods with a name like getInstance(). This method returns the instance whenever it is called for the first time. This method also creates a global instance so that it can be called easily without using more memory in creation and destroying of the process.
- A public static field or method: is used as an alternate method to make the data accessible across Activities and Services that is to be used by the public. This defines the static fields or methods that are used by other classes in the application. The method is used to share an object that gets created by the static field pointing to an object and other accessible fields.
- A HashMap of WeakReferences to Objects: provide some long keys that map the activities that is called by an object from another object. This after mapping sends a key that is unique and long to show the truthfulness of the object.
What are the approaches required to share persistent user-defined objects?Persistent objects come when there is process that is in the running state and the system can perform any action like restart or kill. If there is any data that will persist and required from another data then it is very essential to save it and share it so that if one activity is down, another activity can be performed without any hindrance. To share the complex persistent user-defined objects, it is required to have the approaches like:
- Application preferences: that is used to allow the user to change the setting of preferences and make it accessible by some other objects.
- Files: permissions on the files can be set so that any other file can also use and share the objects
- Content providers: allow easy to follow patterns that allow the user to select the object and share it with other functions.
- Database: the database can be used to store the user data and can easily link between the user and the entity that are present in it.
What is the procedure to check status of an activity in Android?- The status of an activity can be start and stop only. The start means the activity is up and running. It is in execution state and performing some actions. Whereas the stop state defines that the activity is being stopped and performing no action on the system.
- To see or check the status of an activity there is a command that has to be used like NEW_TASK_LAUNCH flag that keeps the track of all the activities that are running and the main command under which the flag resides is given as startActivity() call. To bring the activity stack in front of the process that is already running require the command mentioned above to be used. The activity can be started remotely by using the remote services. These services allow easy interaction with the client and provide the sample to show it on the local server.
Write a program to show the addition and removing of the package.
The package is a collection of similar or different classes that can be added or removed. The package that is added with the following parameter in the command as PACKAGE_ADDED action this allow to broadcast the message of addition to the entire system and in the same way the remove command action i.e. PACKAGE_REMOVED is used.
The program that performs both the action is as follows:
<receiver android:name ="com.android.samples.app.PackageReceiver">
<data android:scheme="package" />
What are the security measures that are taken to make Android secure?1) Android uses many security measures to keep them away from the hackers. They have designed by making changes to the devices or installing a software service on the mobile.
2) Android application uses sandbox that is very popular and allow limited access to the information that is very private and sensitive for the user.
3) It allows the permissions to be set for the use of the information. The security measures that are provided by android is the use of the encryption of the messages that allow user to remain without worry about there phone security.
4) They also consists of user terms and agreements that also taken care of. Most of the time android doesn't allow other applications to run on their system but it can be done by using different resources that are available on-line. As, android is open source it is not fully secure but lots of security issues are being solved for make it more popular and bug free.
Which are the different tags that are required to create reusable user interface that include the layout?Android offers wide range of user interface widgets through which the reusable user interface can be made. It requires some buttons to be made and also allow multiple widgets to be combined using the single and reusable component. There are XML layout files that are used in which each tag can be mapped to the class instance. The tags that are used are:
- <requestFocus />: this allows the component to remain in focus.
- <merge />: merge the components and their properties into one to create a reusable component code
- <include />: this includes the library files and visual components of XML. This also uses
- <merge /> tag that can be combined with it to create the merging layout.
To create the layout these are the tags that are required and essential. The XML visual components are also used to define the overall structure of the layout.
Write a program that shows the creation of reusable user interface that includes the layout.The program that uses the reusable user interface including the layout is given below:
<com.android.launcher.WorkspaceThe tag that is used:
<include android:id="@+id/cell1" layout="@layout/work" />
<include android:id="@+id/cell2" layout="@layout/work" />
<include />: this is the element tag and it includes other XML layout files. It calls the layout files by using their name and including @layout. This @ defines the inclusion of layout file in the program. The same out in the example is included two times. The tag overrides some attributes that are included in the layout. The id can be added that uniquely identifies the application and the components that are used inside it.
What are the methods to avoid memory leaks in Android?
Android applications are well bundled with the memory but they have a drawback of running lots of application that keeps in the memory to make the processing faster. The more application in the memory, the faster will be the switch between the applications. The memory leaks can be avoided by changing the context. The context is used for many operations but it is used to access the resources on android. The widgets have a context parameter in their constructors. There are mainly two types of context: either activity or application. The program is as follows:
protected void onCreate(Bundle state)
TextView label = new TextView(this);
label.setText("Test memory leak");
if the context is having leaks in it then the activity then there is a possibility of the leaks of memory. The leaking of the entire activity can be checked. The system will automatically create and destroy one of the activities by default. Android will reload the application by using the rotation policy. And it will keep the entire static field maintained.
What are the steps required to avoid context related memory leaks?The steps that are required to check and avoid the context-related memory leaks are as follows:
- Never keep the long-lived references linked with the context-activity. This reference can be of the same life as the activity or can be of different length that depends on the type of activity that is getting performed on the action.
- Use of context-application is much better than the context-activity as it allows the application to be reused again and again and the activity can be viewed or executed only once. The application takes less time to execute and activity can take more due to consisting of more than one application in it.
- Non-static inner classes should be avoided while getting used in the activity, as it doesn't control the life-cycle of the static-inner class and make some weak reference to the activities that are inside the process and getting used.
- There should not be relying upon the garbage collector as it is not the ultimate solution for the memory leaks that are defined.
What are the steps required in setting up the linkify calls intent?Linkify is used to route the intent in an activity. This linkify allows the calls to be invoked and allow an activity to be handled. The process of executing the linkfy is as follows:
- Linkfy is used to invoke the process in the TextView and allow the matching of the patterns to be turned into the intent links.
- Linkify monitors the intent links that is being selected by the user and allow it to be modified for further actions.
- Linkfy allows the user to select the link and when user selects it, it calls the VIEW action on the content that uses an URI that is associated with the link.
- Android takes the content that is represented by the URI and the data that is used. It looks for the ContentProvider component that is registered with the system and matches the URI of the content that is getting produced.
- If the match is found for the query done by android then the URI gets used by the ContentProvider and MIME type of data can be returned for the URI.
- Android uses the activity registered in the system that uses the intent-filter matching both the VIEW action and the MIME type for the data that can be linked with the URI.