Manifest file
• AndroidManifest.xml– required– indicates application information• activities (within application tag)• Android SDK version• activities used within the app• services that will be used (Web, phone, etc.)• other aspects
Manifest file – Application tag <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="edu.csci153.MultActivities" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="Screen2" android:label="Second Screen" > </activity> </application>
Manifest File
• Exploring the <application> tag– android:allowBackup=“true”• allows app and data to be backed up with a system
restore
– android:icon=“@drawable/ic_launcher”• Icon to display in the drawer
– android:label="@string/app_name“• Name of the icon in the drawer
– <activity>• child of <application>
Manifest File
• Exploring the <activity> tag– android:name=“edu.csci153.MultActivities”• Associated .java file
– android:label=“@string/app_name”• Text that appears in title bar when this activity is
displayed
– <intent-filter>• child of <activity>
Manifest File
• Exploring the <intent-filter> tag– <action android:name="android.intent.action.MAIN" />• Indicates this is the main entry point of the application
– <category android:name="android.intent.category.LAUNCHER" />• Indicates that the activity should be launched
– Without these lines, the application is started but no activity is presented• intent-filters ‘filter’ what an object can do – if there is no
action defined within the filter, they implicitly deny that the action can be performed
Intent
• Class within Android– android.content.Intent– contains information regarding some action to be
performed• starting the phone dialer• starting an activity• opening a web page• other
Intent Example
• Starting the phone dialer (no special permission needed)
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:5551234"));startActivity(intent);
Intent Example
• Opening a web page– Permission in manifest file
• well over 100 different permissions– access internet, bluetooth, vibrate phone, change wall paper, etc.– http://developer.android.com/reference/android/Manifest.permission.html
• uses-permission tag (child of manifest tag)
<uses-permission android:name="android.permission.INTERNET" />
– Intent in corresponding java file
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(”http://www.google.com”));startActivity(intent);
Intent Example
• Opening an Activity
Intent intent = new Intent(this, Screen2.class);startActivity(intent);
• ‘this’ refers to the current activity• Screen2.class refers to the class file associated with the
new activity to be opened– implies a corresponding Sreen2.java file exists– activity MUST be referenced in the manifest file
Intents
• Methods in the Intent class– The intent class has many methods to put or
retrieve data• useful when one Activity launches another
– put methods used by current Activity that will instantiate another Activity
– get methods used by new instantiated Activity
Intents
• put… methods– put… allows information to be passed from
current Activity to newly instantiated Activity• putExtra – simple data types and arrays
» passing an integer• i.putExtra(“Key1”, 17);
• Key1 – name of the integer to be passed• 17 – contents of the integer to be passed
» passing a String • i.putExtra(“Key2”, “Value”);
» passing an array• i.putExtra(“Key3”, new int [] {1, 2, 3});
Intents
• get… methods– get… allows information to be retrieved by the newly
instantiated Activity• get…Extra – datatype must be known
– getting an integer» getIntent().getIntExtra(“Key1”, 0);» 2nd argument is default value in case Key1 does not exist, or is
not an integer– getIntent().getStringExtra(“Key2”);
» retrieves value associated with Key2» if no value, null is returned – no default option
– getting an array» int [] z = getIntent().getIntArrayExtra(”Key3");» if no value, null is returned – no default option
Activities
• Helpful hints about Activities– Each Activity has:• a corresponding .java file• at least one corresponding .xml file (may have additional
menu file)
– Each Activity must be referenced in the manifest file– The Activity class has a getIntent() method to retrieve
the intent that initiated it– Each activity has a lifecycle
• http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
Activity lifecycle methods
• Most important (signatures)– protected void onCreate(Bundle savedInstanceState);
• called when created or phone rotated
– protected void onPause();• called when still visible but focus is lost
– protected void onResume();• called when focus is set AFTER being completely obscured
• When overriding methods, super class’ version MUST be called
Example method
@Override protected void onResume() { super.onResume();
//Code goes here//Clear fields, set focus, restart sensor //listeners, etc.
}
Additional information
• Sending information back– When one Activity finishes, activity can be sent
back to the Activity that started it as follows:• In the original Activity, 2 methods are needed
– startActivityForResult (Intent data, int requestCode); must be called to open Activity» any non-negative integer can be used for requestCode
– onActivityResult(int requestCode, int resultCode, Intent data) must be implemented» Called when other Activity exits – just before onResume()
• requestCode is same code from above• resultCode is sent from closing Activity• data stores any data that was sent back
Additional information
• Continued from previous slide– In the opened Activity, 1 method is needed• setResult(int resultCode, Intent data) must be called
prior to finish()– any integer can be used for resultCode
» Activity.RESULT_CANCELED» Activity.RESULT_OK» other
– data stores any data to be sent back
Sample Code• In original Activity
public void openActivityAndWaitForResults() {Intent i = new Intent(this, SecondActivity.class);i.putExtra("StringValue", "Coming to you");startActivityForResult(i, 1);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) { Toast.makeText(this, "From second activity: " + requestCode + " " + resultCode + " " +
data.getStringExtra("InfoBack"), Toast.LENGTH_LONG).show();}
• In opened Activitypublic void closeActivityAndSendInfoBack () {
Intent output = new Intent();output.putExtra("InfoBack", "Back at you!");setResult(7, output);finish();
}
Top Related