[
  {
    "path": ".gitignore",
    "content": "# built application files\n*.apk\n*.ap_\n\n# files for the dex VM\n*.dex\n\n# Java class files\n*.class\n\n# generated files\nbin/\ngen/\n\n# Local configuration file (sdk path, etc)\nlocal.properties\n\n# Eclipse project files\n.classpath\n.project\n\n# Proguard folder generated by Eclipse\nproguard/\nproguard-project.txt\n\n# Intellij project files\n*.iml\n*.ipr\n*.iws\n.idea/\n\n*.pydevproject\n.project\n.metadata\n.gradle\nbuild/**\nbin/**\ntmp/**\ntmp/**/*\n*.tmp\n*.bak\n*.swp\n*~.nib\nlocal.properties\n.classpath\n.settings/\n.loadpath\n\n# External tool builders\n.externalToolBuilders/\n\n# Locally stored \"Eclipse launch configurations\"\n*.launch\n\n# CDT-specific\n.cproject\n\n# PDT-specific\n.buildpath\n\n# Android Studio project files\n*.iml\n.gradle\n.idea\nbuild\nimport-summary.txt\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: android\njdk:\n  - oraclejdk8\nsudo: false\nandroid:\n  components:\n  - tools\n  - platform-tools\n  - build-tools-28.0.3\n  - android-28\n  licenses:\n  - android-sdk-license-.+\nscript:\n- \"./gradlew build check --daemon\"\nafter_failure: \"cat $TRAVIS_BUILD_DIR/app/build/outputs/lint-results-debug.xml\"\n"
  },
  {
    "path": "README.md",
    "content": "intro_android_demo\n==================\n\nDemo of app exercises for Intro to Android App Development\n\n<img src=\"http://i.imgur.com/DzkMzcy.png\" width=\"250\" />&nbsp;\n<img src=\"http://i.imgur.com/VJWFW9Q.png\" width=\"250\" />\n\nSample Listing:\n\n - Chapter 1: App Fundamentals\n   - Basic TextViews Example\n - Chapter 2: User Interface\n   - Linear Layout Demo\n - Chapter 3: View Controls\n    - Layout Gravity\n    - Basic Views\n    - View Attributes\n    - Simple ListView\n - Chapter 4: User Interactions\n   - Basic Click Handlers\n   - Handling ListView Clicks\n   - Action Bar Demo\n - Chapter 5: User Flows\n   - Explicit Intents\n   - Implicit Intents\n   - Intent with Results\n - Chapter 6: Networking\n   - Basic Image Download\n   - AsyncTask Example\n   - Smart Image Download\n - Chapter 7: Advanced Views\n   - Toast Inputs\n   - Spinner Toast\n   - TimePicker\n   - ProgressBar\n   - GridView\n - Chapter 8: Preferences\n   - Persist Settings\n - Chapter 9: Content Providers\n   - Contact List\n - Chapter 10: Publishing\n   - APK Instructions\n"
  },
  {
    "path": "app/build.gradle",
    "content": "apply plugin: 'com.android.application'\n\nandroid {\n    compileSdkVersion 28\n\n    defaultConfig {\n        applicationId \"codepath.apps.demointroandroid\"\n        minSdkVersion 21\n        targetSdkVersion 28\n    }\n\n    buildTypes {\n        release {\n            minifyEnabled false\n            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'\n        }\n    }\n}\n\ndependencies {\n    implementation 'androidx.legacy:legacy-support-v4:1.0.0'\n    implementation 'com.codepath.libraries:asynchttpclient:0.1.0'\n}"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Chapter 1, Exercise 1: Change version data to 2 and 2.0 -->\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"codepath.apps.demointroandroid\"\n    android:versionCode=\"2\"\n    android:versionName=\"2.0\" >\n    \n    <uses-permission android:name=\"android.permission.INTERNET\" />\n    <uses-permission android:name=\"android.permission.READ_CONTACTS\"/>\n\n    <application\n        android:allowBackup=\"true\"\n        android:icon=\"@drawable/ic_launcher\"\n        android:label=\"@string/app_name\"\n        android:theme=\"@style/AppTheme\" >\n        <activity\n            android:name=\"codepath.apps.demointroandroid.DemoSelector\"\n            android:label=\"@string/app_name\" >\n            <intent-filter>\n                <action android:name=\"android.intent.action.MAIN\" />\n\n                <category android:name=\"android.intent.category.LAUNCHER\" />\n            </intent-filter>\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.BasicTextViewActivity\"\n            android:label=\"@string/title_activity_basic_text_view\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.LinearLayoutDemoActivity\"\n            android:label=\"@string/title_activity_linear_layout_demo\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.LayoutGravityActivity\"\n            android:label=\"@string/title_activity_layout_gravity\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.BasicViewsActivity\"\n            android:label=\"@string/title_activity_basic_views\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.ViewAttributesActivity\"\n            android:label=\"@string/title_activity_view_attributes\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.SimpleListViewActivity\"\n            android:label=\"@string/title_activity_simple_list_view\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.BasicClickHandlersActivity\"\n            android:label=\"@string/title_activity_basic_click_handlers\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.ButtonToastActivity\"\n            android:label=\"@string/title_activity_button_toast\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.ListViewClicksActivity\"\n            android:label=\"@string/title_activity_list_view_clicks\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.ExplicitIntentActivity\"\n            android:label=\"@string/title_activity_explicit_intent\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.ImplicitIntentsActivity\"\n            android:label=\"@string/title_activity_implicit_intents\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.IntentWithResultActivity\"\n            android:label=\"@string/title_activity_intent_with_result\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.ActionBarMenuActivity\"\n            android:label=\"@string/title_activity_action_bar_menu\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.SimpleBundleDemoActivity\"\n            android:label=\"@string/title_activity_simple_bundle_demo\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.SimpleReturnResultActivity\"\n            android:label=\"@string/title_activity_simple_return_result\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.BasicImageDownloadActivity\"\n            android:label=\"@string/title_activity_basic_image_download\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.AsyncTaskPerformActivity\"\n            android:label=\"@string/title_activity_async_task_perform\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.SmartImageDownloadActivity\"\n            android:label=\"@string/title_activity_smart_image_download\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.ToastFormInputsActivity\"\n            android:label=\"@string/title_activity_toast_form_inputs\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.SpinnerWithToastActivity\"\n            android:label=\"@string/title_activity_spinner_with_toast\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.TimePickerDemoActivity\"\n            android:label=\"@string/title_activity_time_picker_demo\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.ProgressBarActivity\"\n            android:label=\"@string/title_activity_progress_bar\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.GridViewDemoActivity\"\n            android:label=\"@string/title_activity_grid_view_demo\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.PersistSettingsActivity\"\n            android:label=\"@string/title_activity_persist_settings\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.ContactListActivity\"\n            android:label=\"@string/title_activity_contact_list\" >\n        </activity>\n        <activity\n            android:name=\"codepath.apps.demointroandroid.PublishingInstructionsActivity\"\n            android:label=\"@string/title_activity_publishing_instructions\" >\n        </activity>\n    </application>\n\n</manifest>"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/ActionBarMenuActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.annotation.SuppressLint;\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.view.Menu;\nimport android.view.MenuItem;\nimport android.widget.Toast;\n\npublic class ActionBarMenuActivity extends Activity {\n\n\t@SuppressLint(\"NewApi\")\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_action_bar_menu);\n\t\tgetActionBar().setTitle(\"Click an Icon\");\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_action_bar_menu, menu);\n\t\treturn true;\n\t}\n\t\n\t\n\t@Override\n\tpublic boolean onOptionsItemSelected(MenuItem item) {\n\t  switch (item.getItemId()) {\n\t  case R.id.menu_toast:\n\t\tToast.makeText(this, \"Toasted\", Toast.LENGTH_SHORT).show();\n\t\tbreak;\n\t  case R.id.menu_launch:\n\t\tIntent i = new Intent(this, SimpleBundleDemoActivity.class);\n\t\tstartActivity(i);\n\t\tbreak;\n\t  default:\n\t\tbreak;\n\t  }\n\t  return true;\n\t}\n\t\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/AsyncTaskPerformActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\nimport android.widget.Toast;\n\npublic class AsyncTaskPerformActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_async_task_perform);\n\t\tnew MyAsyncTask().execute();\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_async_task_perform, menu);\n\t\treturn true;\n\t}\n\t\n\tpublic void doneCounting() {\n\t\tToast.makeText(this, \"Done Counting to 100000\", Toast.LENGTH_SHORT).show();\n\t}\n\t\n\tprivate class MyAsyncTask extends AsyncTask<Void, Void, Void> {\n\t     public Void doInBackground(Void... params) {\n\t    \tfor (long i=0; i < 100000; i++) {\n\t    \t\tSystem.out.println(i);\n\t    \t}\n\t\t\treturn null;\n\t     }\n\n\t     protected void onPostExecute(Void result) {\n\t    \t doneCounting();\n\t     }\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/BasicClickHandlersActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.Button;\n\npublic class BasicClickHandlersActivity extends Activity {\n  \n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_basic_click_handlers);\n\t\tButton secondButton = (Button) findViewById(R.id.btnClick2);\n\t\tsecondButton.setOnClickListener(new View.OnClickListener() {\n\t\t\t@Override\n\t\t\tpublic void onClick(View v) {\n\t\t\t\tsecondButtonClicked(v);\n\t\t\t}\n\t\t});\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_basic_click_handlers, menu);\n\t\treturn true;\n\t}\n\t\n\tpublic void firstButtonClicked(View v) {\n\t\tSimpleAlertDialog.displayWithOK(this, \"firstButton clicked via XML handler\");\n\t}\n\t\n\tprivate void secondButtonClicked(View v) {\n\t\tSimpleAlertDialog.displayWithOK(this, \"secondButton clicked via Java handler in onCreate\");\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/BasicImageDownloadActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.annotation.SuppressLint;\nimport android.app.Activity;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.os.Bundle;\nimport android.os.StrictMode;\nimport android.view.Menu;\nimport android.widget.ImageView;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.net.URLConnection;\n\npublic class BasicImageDownloadActivity extends Activity {\n\n    @SuppressLint(\"NewApi\")\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_basic_image_download);\n        StrictMode.setThreadPolicy(\n                new StrictMode.ThreadPolicy.Builder().permitNetwork().build());\n        downloadImageFromUri(\"https://2.gravatar.com/avatar/858dfac47ab8176458c005414d3f0c36?s=128&d=&r=G\");\n    }\n\n    private void downloadImageFromUri(String address) {\n        URL url;\n        try {\n            url = new URL(address);\n        } catch (MalformedURLException e1) {\n            url = null;\n        }\n\n        URLConnection conn;\n        InputStream in;\n        Bitmap bitmap;\n        try {\n            conn = url.openConnection();\n            conn.connect();\n            in = conn.getInputStream();\n            bitmap = BitmapFactory.decodeStream(in);\n            in.close();\n        } catch (IOException e) {\n            bitmap = null;\n        }\n\n        if (bitmap != null) {\n            ImageView img = (ImageView) findViewById(R.id.ivBasicImage);\n            img.setImageBitmap(bitmap);\n        }\n    }\n\n    @Override\n    public boolean onCreateOptionsMenu(Menu menu) {\n        // Inflate the menu; this adds items to the action bar if it is present.\n        getMenuInflater().inflate(R.menu.activity_basic_image_download, menu);\n        return true;\n    }\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/BasicTextViewActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.util.Log;\nimport android.view.Menu;\n\npublic class BasicTextViewActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_basic_text_view);\n\t\tLog.d(\"DEBUG\", \"onCreate was just called!\");\n\t}\n\t\n\tprotected void onResume() {\n\t\tsuper.onResume();\n\t\tLog.d(\"DEBUG\", \"onResume was just called!\");\n\t}\n\t\n\tprotected void onPause() {\n\t\tsuper.onPause();\n\t\tLog.d(\"DEBUG\", \"onPause was just called!\");\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_basic_text_view, menu);\n\t\treturn true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/BasicViewsActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\n\npublic class BasicViewsActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_basic_views);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_basic_views, menu);\n\t\treturn true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/ContactListActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.annotation.SuppressLint;\nimport android.app.Activity;\nimport android.content.CursorLoader;\nimport android.content.pm.PackageManager;\nimport android.database.Cursor;\nimport android.net.Uri;\nimport android.os.Bundle;\nimport android.provider.ContactsContract;\nimport androidx.core.app.ActivityCompat;\nimport android.util.Log;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.AdapterView;\nimport android.widget.AdapterView.OnItemClickListener;\nimport android.widget.ArrayAdapter;\nimport android.widget.ListView;\nimport android.widget.Toast;\n\nimport java.util.ArrayList;\n\npublic class ContactListActivity extends Activity {\n\n    private static final int REQUEST_READ_CONTACTS = 1;\n    ArrayList<String> names = new ArrayList<String>();\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_contact_list);\n        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.READ_CONTACTS)\n                == PackageManager.PERMISSION_GRANTED) {\n            loadContacts();\n        } else {\n            ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_CONTACTS},\n                    REQUEST_READ_CONTACTS);\n        }\n        populateListView();\n    }\n\n    private void populateListView() {\n        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,\n                android.R.layout.simple_list_item_1, names);\n\n        ListView listView = (ListView) findViewById(R.id.lvContacts);\n        listView.setAdapter(adapter);\n        listView.setOnItemClickListener(new OnItemClickListener() {\n            @Override\n            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {\n                Toast.makeText(ContactListActivity.this, names.get(position), Toast.LENGTH_SHORT).show();\n            }\n        });\n    }\n\n    @Override\n    public void onRequestPermissionsResult(int requestCode,\n                                           String permissions[], int[] grantResults) {\n        if (requestCode == REQUEST_READ_CONTACTS) {\n            if (grantResults.length > 0\n                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {\n                loadContacts();\n            } else {\n                Toast.makeText(this, \"Permission Denied, Not able to load contact\", Toast.LENGTH_SHORT).show();\n            }\n        }\n    }\n\n    @SuppressLint(\"NewApi\")\n    private void loadContacts() {\n        Uri allContacts = Uri.parse(\"content://contacts/people\");\n        CursorLoader cursorLoader = new CursorLoader(this, allContacts,\n                null, // the columns to retrive\n                null, // the selection criteria\n                null, // the selection args\n                null // the sort order\n        );\n\n        Cursor c = cursorLoader.loadInBackground();\n        if (c.moveToFirst()) {\n            do {\n                // Get Contact ID\n                int idIndex = c.getColumnIndex(ContactsContract.Contacts._ID);\n                String contactID = c.getString(idIndex);\n\n                // Get Contact Name\n                int nameIndex = c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);\n                String contactDisplayName = c.getString(nameIndex);\n                names.add(contactDisplayName);\n\n                Log.d(\"debug\", contactID + \", \" + contactDisplayName);\n            } while (c.moveToNext());\n        }\n    }\n\n    @Override\n    public boolean onCreateOptionsMenu(Menu menu) {\n        // Inflate the menu; this adds items to the action bar if it is present.\n        getMenuInflater().inflate(R.menu.activity_contact_list, menu);\n        return true;\n    }\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/DemoSelector.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.annotation.SuppressLint;\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.view.Gravity;\nimport android.view.Menu;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.AbsListView;\nimport android.widget.BaseExpandableListAdapter;\nimport android.widget.ExpandableListView;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\npublic class DemoSelector extends Activity {\n\t\n\tExpandableListView elvChapters;\n\tChaptersListAdapter elaAdapter;\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_demo_selector);\n\t    setupChaptersListView();\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_demo_selector, menu);\n\t\treturn true;\n\t}\n\t\n\tprivate void setupChaptersListView() {\n\t\telvChapters = (ExpandableListView)findViewById(R.id.elvChapters);\n\t\telaAdapter = new ChaptersListAdapter();\n\t\telvChapters.setAdapter(elaAdapter);\n\t\telvChapters.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {\n\t\t\tpublic boolean onChildClick(ExpandableListView parent, View v,\n\t\t\t\t\tint groupPosition, int childPosition, long id) {\n\t\t\t\t\n\t\t\t\tString exerciseTitle =  (String)elaAdapter.getChild(groupPosition, childPosition);\n                Class<? extends Activity> exerciseClass = elaAdapter.getExerciseClass(groupPosition, childPosition, id);\n                if (exerciseClass != null) {\n                \tToast.makeText(DemoSelector.this, exerciseTitle, Toast.LENGTH_LONG).show();\n                \tstartActivity(new Intent(DemoSelector.this, exerciseClass));\t\n                } else {\n                \tToast.makeText(DemoSelector.this, \"Exercise Not Available\", Toast.LENGTH_SHORT).show();\n                }\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t}\n\t\n\tprivate class ChaptersListAdapter extends BaseExpandableListAdapter {\n        private String[] chapters = getResources().getStringArray(R.array.chapters);\n        private String[][] exercises;\n        \n        public ChaptersListAdapter() {\n        \tsuper();\n        \texercises = new String[chapters.length][];\n        \tfor (int i=0; i < exercises.length; i++) {\n        \t\tint resId = getResources().getIdentifier(\"chap\" + (i+1), \"array\", getPackageName());\n        \t\texercises[i] = getResources().getStringArray(resId);\n        \t}\n        }\n\n\n        public Object getChild(int groupPosition, int childPosition) {\n            return exercises[groupPosition][childPosition];\n        }\n\n        public long getChildId(int groupPosition, int childPosition) {\n            return childPosition;\n        }\n\n        public int getChildrenCount(int groupPosition) {\n            return exercises[groupPosition].length;\n        }\n\n        public TextView getGenericView() {\n            // Layout parameters for the ExpandableListView\n            AbsListView.LayoutParams lp = new AbsListView.LayoutParams(\n                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);\n\n            TextView textView = new TextView(DemoSelector.this);\n            textView.setLayoutParams(lp);\n            // Center the text vertically\n            textView.setTextSize(20);\n            textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);\n            // Set the text starting position\n            textView.setPadding(60, 20, 20, 20);\n            return textView;\n        }\n\n        public View getChildView(int groupPosition, int childPosition, boolean isLastChild,\n                View convertView, ViewGroup parent) {\n            TextView textView = getGenericView();\n            textView.setPadding(80, 20, 20, 20);\n            textView.setText(getChild(groupPosition, childPosition).toString());\n            return textView;\n        }\n\n        public Object getGroup(int groupPosition) {\n            return \"Chapter \" + (groupPosition + 1) + \": \" + chapters[groupPosition];\n        }\n\n        public int getGroupCount() {\n            return chapters.length;\n        }\n\n        public long getGroupId(int groupPosition) {\n            return groupPosition;\n        }\n\n        public View getGroupView(int groupPosition, boolean isExpanded, View convertView,\n                ViewGroup parent) {\n            TextView textView = getGenericView();\n            textView.setText(getGroup(groupPosition).toString());\n            return textView;\n        }\n\n        public boolean isChildSelectable(int groupPosition, int childPosition) {\n            return true;\n        }\n\n        public boolean hasStableIds() {\n            return true;\n        }\t\n        \n        public Class<? extends Activity> getExerciseClass(int groupPosition, int childPosition, long id) {\n        \tString exerciseId = \"chap\" + (groupPosition + 1) + \"ex\" + (childPosition + 1);\n        \treturn ExerciseActivityMapper.getExerciseClass(exerciseId);\n        }\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/ExerciseActivityMapper.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport java.util.HashMap;\n\nimport android.app.Activity;\n\npublic class ExerciseActivityMapper {\n  private static ExerciseActivityMapper singleton;\n  private HashMap<String, Class<? extends Activity>> exerciseClassMap;\n\t\n  public ExerciseActivityMapper() {\n\t  defineExerciseMappings();\n  }\n\n  // ExerciseActivityMapper.getExerciseClass(\"chap1ex1\");\n  public static Class<? extends Activity> getExerciseClass(String exerciseId) {\n\t  return getSingleton().exerciseClassMap.get(exerciseId);\n  }\n  \n  private static ExerciseActivityMapper getSingleton() {\n\t  if (singleton == null) {\n\t\t  singleton = new ExerciseActivityMapper();\n\t  }\n\t  return singleton;\n  }\n  \n  private void defineExerciseMappings() {\n\t  exerciseClassMap = new HashMap<String, Class<? extends Activity>>();\n\t  // Chapter 1: App Fundamentals\n\t  exerciseClassMap.put(\"chap1ex1\", BasicTextViewActivity.class);\n\t  // Chapter 2: User Interface\n\t  exerciseClassMap.put(\"chap2ex1\", LinearLayoutDemoActivity.class);\n\t  // Chapter 3: View Controls\n\t  exerciseClassMap.put(\"chap3ex1\", LayoutGravityActivity.class);\n\t  exerciseClassMap.put(\"chap3ex2\", BasicViewsActivity.class);\n\t  exerciseClassMap.put(\"chap3ex3\", ViewAttributesActivity.class);\n\t  exerciseClassMap.put(\"chap3ex4\", SimpleListViewActivity.class);\n\t  // Chapter 4: User Interactions\n\t  exerciseClassMap.put(\"chap4ex1\", BasicClickHandlersActivity.class);\n\t  exerciseClassMap.put(\"chap4ex2\", ListViewClicksActivity.class);\n\t  // Chapter 5: User Flows\n\t  exerciseClassMap.put(\"chap5ex1\", ExplicitIntentActivity.class); // Explicit Intents\n\t  exerciseClassMap.put(\"chap5ex2\", ImplicitIntentsActivity.class); // Implicit Intents\n\t  exerciseClassMap.put(\"chap5ex3\", IntentWithResultActivity.class); // Intent with Results\n\t  exerciseClassMap.put(\"chap5ex4\", ActionBarMenuActivity.class); // Action Bar\n\t  // Chapter 6: Networking\n\t  exerciseClassMap.put(\"chap6ex1\", BasicImageDownloadActivity.class); // Basic Image Download\n\t  exerciseClassMap.put(\"chap6ex2\", AsyncTaskPerformActivity.class); // AsyncTask\n\t  exerciseClassMap.put(\"chap6ex3\", SmartImageDownloadActivity.class); // Smart Image Download\n\t  // Chapter 7: Advanced Views\n\t  exerciseClassMap.put(\"chap7ex1\", ToastFormInputsActivity.class); // Toast Inputs\n\t  exerciseClassMap.put(\"chap7ex2\", SpinnerWithToastActivity.class); // Spinner Toast\n\t  exerciseClassMap.put(\"chap7ex3\", TimePickerDemoActivity.class); // TimePicker\n\t  exerciseClassMap.put(\"chap7ex4\", ProgressBarActivity.class); // ProgressBar\n\t  exerciseClassMap.put(\"chap7ex5\", GridViewDemoActivity.class); // GridView\n\t  // Chapter 8: Preferences\n\t  exerciseClassMap.put(\"chap8ex1\", PersistSettingsActivity.class); // Persist Settings\n\t  // Chapter 9: ContentProviders\n\t  exerciseClassMap.put(\"chap9ex1\", ContactListActivity.class); // Contact List\n\t  // Chapter 10: Publishing\n\t  exerciseClassMap.put(\"chap10ex1\", PublishingInstructionsActivity.class); // APK Generation\n  }\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/ExplicitIntentActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.view.Menu;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.Button;\n\npublic class ExplicitIntentActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_explicit_intent);\n\t\tButton btnLaunchSecond = (Button) findViewById(R.id.btnLaunchSecond);\n\t\tbtnLaunchSecond.setOnClickListener(new OnClickListener() {\n\t\t\t@Override\n\t\t\tpublic void onClick(View v) {\n\t\t\t\tIntent i = new Intent(ExplicitIntentActivity.this, SimpleBundleDemoActivity.class);\n\t\t\t\ti.putExtra(\"text\", \"Passed String Extra!\");\n\t\t\t\tstartActivity(i);\n\t\t\t}\n\t\t});\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_explicit_intent, menu);\n\t\treturn true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/GridViewDemoActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.content.Context;\nimport android.view.Menu;\nimport android.view.View;\nimport android.view.ViewGroup;\nimport android.widget.ArrayAdapter;\nimport android.widget.GridView;\nimport android.widget.ImageView;\n\npublic class GridViewDemoActivity extends Activity {\n\t\n\tGridView gvImages;\n\tGridImageAdapter adapter;\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_grid_view_demo);\n\t\tpopulateGridViewImages();\n\t}\n\n\tprivate void populateGridViewImages() {\n\t\tgvImages = (GridView) findViewById(R.id.gvImages);\n\t\tString[] numbers = new String[] { \"ad\", \"ae\", \"af\", \"ag\", \"ai\", \"al\"};\n\t\tadapter = new GridImageAdapter(this,\n\t\t\t\tandroid.R.layout.simple_list_item_1, numbers);\n\t\tgvImages.setAdapter(adapter);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_grid_view_demo, menu);\n\t\treturn true;\n\t}\n\t\n\tclass GridImageAdapter extends ArrayAdapter<String> {\n\n\t\tpublic GridImageAdapter(Context context, int textViewResourceId, String[] numbers) {\n\t\t\tsuper(context, textViewResourceId, numbers);\n\t\t}\n\t\t\n\t\tpublic View getView(int position, View convertView, ViewGroup parent) {\n\t\t    ImageView v = new ImageView(GridViewDemoActivity.this);\n\t\t    int resId = getResources().getIdentifier(getItem(position), \"drawable\", getPackageName());\n\t\t    v.setImageDrawable(getResources().getDrawable(resId));\n\t\t    return v;\n\t\t}\n\t\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/ImplicitIntentsActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.net.Uri;\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.TextView;\n\npublic class ImplicitIntentsActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_implicit_intents);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_implicit_intents, menu);\n\t\treturn true;\n\t}\n\t\n\tpublic void visitUrlAddress(View v) {\n\t\tUri url = getUriToVisit();\n\t\tif (url != null) {\n\t\t\tIntent i = new Intent(Intent.ACTION_VIEW);\n\t\t\ti.setData(url);\n\t\t\tstartActivity(i); \n\t\t}\n\t\t\t\n\t}\n\t\n\tpublic Uri getUriToVisit() {\n\t\tString urlAddress =  ((TextView) findViewById(R.id.txtUrlAddress)).getText().toString();\n\t\tif (urlAddress != null) {\n\t\t  if (!urlAddress.startsWith(\"http://\"))\n\t\t     urlAddress = \"http://\" + urlAddress;\n\t\t  return Uri.parse(urlAddress);\n\t\t} else {\n\t\t  return null;\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/IntentWithResultActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.provider.ContactsContract;\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.util.Log;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\npublic class IntentWithResultActivity extends Activity {\n\t\n\tfinal static int GET_RESULT_TEXT = 0;\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_intent_with_result);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_intent_with_result, menu);\n\t\treturn true;\n\t}\n\t\n\tpublic void enterText(View v) {\n\t\tstartActivityForResult(\n\t\t\t\t  new Intent(IntentWithResultActivity.this, SimpleReturnResultActivity.class), \n\t\t\t\t    GET_RESULT_TEXT);\n\t}\n\t\n\t// Handle the result once the activity returns a result, display contact\n\tprotected void onActivityResult(int requestCode, int resultCode, Intent data) {\n\t\tif (requestCode == 0) {\n\t\t\tif (resultCode == RESULT_OK) {\n\t\t\t\tTextView tvResult = (TextView)findViewById(R.id.txtDisplayResult);\n\t\t\t\ttvResult.setText(data.getStringExtra(\"result\"));\n\t\t\t\tToast.makeText(this, data.getStringExtra(\"result\"), Toast.LENGTH_SHORT).show();\n\t\t\t}\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/LayoutGravityActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\n\npublic class LayoutGravityActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_layout_gravity);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_layout_gravity, menu);\n\t\treturn true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/LinearLayoutDemoActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\n\npublic class LinearLayoutDemoActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_linear_layout_demo);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_linear_layout_demo, menu);\n\t\treturn true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/ListViewClicksActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.AdapterView;\nimport android.widget.Toast;\nimport android.widget.AdapterView.OnItemClickListener;\nimport android.widget.ArrayAdapter;\nimport android.widget.ListView;\n\npublic class ListViewClicksActivity extends Activity {\n\tArrayAdapter<String> adapter; \n\t\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_list_view_clicks);\n\t\tString[] myCountries = { \"United States\", \"Canada\", \"Mexico\", \"Japan\" };\n\t\tadapter = new ArrayAdapter<String>(this, \n\t\t  android.R.layout.simple_list_item_1, myCountries);\n\n\t\tListView listView = (ListView) findViewById(R.id.lvDemo);\n\t\tlistView.setAdapter(adapter);\n\t\tlistView.setOnItemClickListener(new OnItemClickListener() {\n\t\t\t@Override\n\t\t\tpublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {\n\t\t\t\tString country = adapter.getItem(position);\n\t\t\t\tSimpleAlertDialog.displayWithOK(ListViewClicksActivity.this, country);\n\t\t\t\tToast.makeText(ListViewClicksActivity.this, country, Toast.LENGTH_SHORT).show();\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_list_view_clicks, menu);\n\t\treturn true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/PersistSettingsActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.content.SharedPreferences;\nimport android.content.SharedPreferences.Editor;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.CheckBox;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\npublic class PersistSettingsActivity extends Activity {\n\t\n\tSharedPreferences prefs;\n\tEditor edits;\n\tTextView txtPersist;\n\tCheckBox chkPersist;\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_persist_settings);\n\t\ttxtPersist = (TextView) findViewById(R.id.txtPersistText);\n\t\tchkPersist = (CheckBox) findViewById(R.id.chkPersistState);\n\t\tprefs = getSharedPreferences(\"view\", 0);\n\t\tedits = prefs.edit();\n\t\tpopulateValues();\n\t}\n\t\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_persist_settings, menu);\n\t\treturn true;\n\t}\n\t\n\tpublic void populateValues() {\n\t\tString persistedText = prefs.getString(\"txtVal\", \"None Stored Yet\");\n\t\tboolean isChecked = prefs.getBoolean(\"chkState\", false);\n\t\ttxtPersist.setText(persistedText);\n\t\tchkPersist.setChecked(isChecked);\n\t}\n\t\n\tpublic void persistValues(View v) {\n\t\tedits.putString(\"txtVal\", txtPersist.getText().toString());\n\t\tedits.putBoolean(\"chkState\", chkPersist.isChecked());\n\t\tedits.commit();\n\t\tToast.makeText(this, \"Persisted!\", Toast.LENGTH_SHORT).show();\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/ProgressBarActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.app.Activity;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.util.Log;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.ProgressBar;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\nimport com.facebook.stetho.server.http.HttpStatus;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.util.ArrayList;\n\nimport okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.Response;\n\npublic class ProgressBarActivity extends Activity {\n\n    ProgressBar pb;\n    TextView tvResult;\n    ArrayList<String> lines = new ArrayList<String>();\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_progress_bar);\n        pb = (ProgressBar) findViewById(R.id.pgDownloading);\n        tvResult = (TextView) findViewById(R.id.txtUrlOutput);\n    }\n\n    @Override\n    public boolean onCreateOptionsMenu(Menu menu) {\n        // Inflate the menu; this adds items to the action bar if it is present.\n        getMenuInflater().inflate(R.menu.activity_progress_bar, menu);\n        return true;\n    }\n\n    public void startFourUrlAsync(View v) {\n        new DelayTask().execute();\n    }\n\n    public class DelayTask extends AsyncTask<Void, Integer, String> {\n        int count = 0;\n\n        @Override\n        protected void onPreExecute() {\n            pb.setVisibility(ProgressBar.VISIBLE);\n        }\n\n        @Override\n        protected String doInBackground(Void... params) {\n            String res = loadUrlBody(\"https://google.com\");\n            lines.add(res.split(\"\\n\")[0]);\n            publishProgress(25);\n            res = loadUrlBody(\"https://yahoo.com\");\n            lines.add(res.split(\"\\n\")[0]);\n            publishProgress(50);\n            res = loadUrlBody(\"https://twitter.com\");\n            lines.add(res.split(\"\\n\")[0]);\n            publishProgress(75);\n            res = loadUrlBody(\"https://facebook.com\");\n            lines.add(res.split(\"\\n\")[0]);\n            publishProgress(100);\n            return \"complete\";\n        }\n\n        @Override\n        protected void onProgressUpdate(Integer... values) {\n            pb.setProgress(values[0]);\n        }\n\n        @Override\n        protected void onPostExecute(String result) {\n            Toast.makeText(ProgressBarActivity.this, \"Completed!\", Toast.LENGTH_SHORT).show();\n            tvResult.setText(lines.toString());\n        }\n\n        protected String loadUrlBody(String address) {\n            OkHttpClient httpclient = new OkHttpClient();\n            Response response;\n            String responseString = null;\n            try {\n                response = httpclient.newCall(new Request.Builder().url(address).build()).execute();\n                int statusCode = response.code();\n                if (statusCode == HttpStatus.HTTP_OK) {\n                    ByteArrayOutputStream out = new ByteArrayOutputStream();\n                    out.write(response.body().bytes());\n                    responseString = out.toString();\n                    out.close();\n                } else {\n                    response.body().byteStream().close();\n                    throw new IOException(response.message());\n                }\n            } catch (IOException e) {\n                Log.e(ProgressBarActivity.class.getSimpleName(),\n                        \"Error retrieving data from: \" + address, e);\n            }\n\n            return responseString;\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/PublishingInstructionsActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\n\npublic class PublishingInstructionsActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_publishing_instructions);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater()\n\t\t\t\t.inflate(R.menu.activity_publishing_instructions, menu);\n\t\treturn true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/SimpleAlertDialog.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.app.AlertDialog;\nimport android.content.Context;\nimport android.content.DialogInterface;\n\n// SimpleAlertDialog.displayWithOK(this, \"Hello\", \"Title\");\npublic class SimpleAlertDialog {\n\tpublic static void displayWithOK(Context c, String message) {\n\t\tdisplayWithOK(c, message, \"CodePath Demo Intro Android\");\t\t\n\t}\n\t\n\tpublic static void displayWithOK(Context c, String message, String title) {\n\t\tfinal AlertDialog alertDialog = new AlertDialog.Builder(c).create();\n\n\t\t// Setting Dialog Title\n\t\talertDialog.setTitle(title);\n\n\t\t// Setting Dialog Message\n\t\talertDialog.setMessage(message);\n\n\t\t// Setting OK Button\n\t\talertDialog.setButton(AlertDialog.BUTTON_POSITIVE, \"OK\", new DialogInterface.OnClickListener() {\n\t\t\tpublic void onClick(DialogInterface dialog, int which) {\n\t\t\t\talertDialog.hide();\n\t\t\t}\n\t\t});\n\n\t\t// Showing Alert Message\n\t\talertDialog.show();\n\t}\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/SimpleBundleDemoActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.annotation.SuppressLint;\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.view.Menu;\nimport android.view.MenuItem;\nimport android.widget.TextView;\n\npublic class SimpleBundleDemoActivity extends Activity {\n\n\t@SuppressLint(\"NewApi\")\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_simple_bundle_demo);\n\t\tString initialText = getIntent().getStringExtra(\"text\");\n\t\tTextView tvDisplayText = (TextView) findViewById(R.id.tvDisplayText);\n\t\tif (initialText != null)\n\t\t  tvDisplayText.setText(initialText);\n\t\tgetActionBar().setHomeButtonEnabled(true);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_simple_bundle_demo, menu);\n\t\treturn true;\n\t}\n\t\n\t\n\t\n\t@Override\n\tpublic boolean onOptionsItemSelected(MenuItem item) {\n\t  switch (item.getItemId()) {\n\t  case android.R.id.home:\n\t\tIntent i = new Intent(this, ActionBarMenuActivity.class);\n\t\tstartActivity(i);\n\t\t break;\n\t  default:\n\t\tbreak;\n\t  }\n\t  return true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/SimpleListViewActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\nimport android.widget.ArrayAdapter;\nimport android.widget.ListView;\n\npublic class SimpleListViewActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_simple_list_view);\n\t\tString[] myStringArray = { \"Bruce\", \"Wayne\", \"Bill\" };\n\t\tArrayAdapter<String> adapter = new ArrayAdapter<String>(this, \n\t\t  R.layout.simple_list_view_item, myStringArray);\n\n\t\tListView listView = (ListView) findViewById(R.id.lvDemo);\n\t\tlistView.setAdapter(adapter);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_simple_list_view, menu);\n\t\treturn true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/SimpleReturnResultActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.EditText;\n\npublic class SimpleReturnResultActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_simple_return_result);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_simple_return_result, menu);\n\t\treturn true;\n\t}\n\t\n\tpublic void sendResult(View v) {\n\t\tString result = ((EditText) findViewById(R.id.txtRandomResultText)).getText().toString();\n\t\tIntent i = new Intent();\n\t\ti.putExtra(\"result\", result);\n\t\tsetResult(RESULT_OK, i);\n\t\tfinish();\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/SmartImageDownloadActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.app.Activity;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.os.Bundle;\nimport android.view.Menu;\nimport android.widget.ImageView;\n\nimport androidx.annotation.Nullable;\n\nimport com.codepath.asynchttpclient.AsyncHttpClient;\nimport com.codepath.asynchttpclient.callback.BinaryHttpResponseHandler;\n\nimport java.io.IOException;\n\nimport okhttp3.Headers;\nimport okhttp3.Response;\n\n\npublic class SmartImageDownloadActivity extends Activity {\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_smart_image_download);\n        downloadSmartImageFromUrl(\"https://2.gravatar.com/avatar/858dfac47ab8176458c005414d3f0c36?s=128&d=&r=G\");\n    }\n\n    private void downloadSmartImageFromUrl(String address) {\n        AsyncHttpClient client = new AsyncHttpClient();\n        client.get(address, new BinaryHttpResponseHandler() {\n                    @Override\n                    public void onSuccess(int statusCode, Headers headers, Response response) {\n                        try {\n                            byte[] image = response.body().bytes();\n                            Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);\n                            ImageView img = findViewById(R.id.ivSmartImage);\n                            img.setImageBitmap(bitmap);\n                        } catch (IOException e) {\n                            e.printStackTrace();\n                        }\n\n                    }\n\n                    @Override\n                    public void onFailure(int statusCode, @Nullable Headers headers,\n                                          String errorResponse, @Nullable Throwable throwable) {\n\n                    }\n                }\n        );\n    }\n\n    @Override\n    public boolean onCreateOptionsMenu(Menu menu) {\n        // Inflate the menu; this adds items to the action bar if it is present.\n        getMenuInflater().inflate(R.menu.activity_smart_image_download, menu);\n        return true;\n    }\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/SpinnerWithToastActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.ArrayAdapter;\nimport android.widget.Button;\nimport android.widget.Spinner;\nimport android.widget.Toast;\n\npublic class SpinnerWithToastActivity extends Activity {\n\tSpinner spinner;\n\tButton btnSpinnerVal;\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_spinner_with_toast);\n\t\tspinner = (Spinner) findViewById(R.id.spnOptions); \n\t\tbtnSpinnerVal = (Button) findViewById(R.id.btnSpinnerValue);\n\t\tloadSpinner();\n\t}\n\n\tprivate void loadSpinner() {\n\t\tArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,\n\t\t  R.array.spinner_options, android.R.layout.simple_spinner_item);\n\t\t// Set layout style during dropdown\n\t\tadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);\n\t\t// Load data from adapter\n\t\tspinner.setAdapter(adapter);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_spinner_with_toast, menu);\n\t\treturn true;\n\t}\n\t\n\tpublic void displayVal(View v) {\n\t\tToast.makeText(this, spinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/TimePickerDemoActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.TimePicker;\nimport android.widget.Toast;\n\npublic class TimePickerDemoActivity extends Activity {\n\t\n\tTimePicker tpTime;\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_time_picker_demo);\n\t\ttpTime = (TimePicker) findViewById(R.id.tpTime);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_time_picker_demo, menu);\n\t\treturn true;\n\t}\n\t\n\tpublic void displayTime(View v) {\n\t\tString time = tpTime.getCurrentHour() + \":\" + tpTime.getCurrentMinute();\n\t\tToast.makeText(this, time, Toast.LENGTH_SHORT).show();\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/ToastFormInputsActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.view.Menu;\nimport android.view.View;\nimport android.widget.CheckBox;\nimport android.widget.EditText;\nimport android.widget.RadioButton;\nimport android.widget.RadioGroup;\nimport android.widget.Toast;\n\npublic class ToastFormInputsActivity extends Activity {\n\t\n\tEditText etVal;\n\tCheckBox chkVal;\n\tRadioGroup rdgVal;\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_toast_form_inputs);\n\t\tetVal = (EditText) findViewById(R.id.etVal);\n\t\tchkVal = (CheckBox) findViewById(R.id.chkVal);\n\t\trdgVal = (RadioGroup) findViewById(R.id.rdgVal);\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_toast_form_inputs, menu);\n\t\treturn true;\n\t}\n\t\n\tpublic void toastInputs(View v) {\n\t\tint selected = rdgVal.getCheckedRadioButtonId();\n\t\tRadioButton b = (RadioButton) findViewById(selected);\n\t\t\n\t\tString text = etVal.getText() + \" | \" + chkVal.isChecked() + \" | \" + b.getText();\n\t\tToast.makeText(this, text, Toast.LENGTH_SHORT).show();\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/java/codepath/apps/demointroandroid/ViewAttributesActivity.java",
    "content": "package codepath.apps.demointroandroid;\n\nimport android.os.Bundle;\nimport android.app.Activity;\nimport android.util.Log;\nimport android.view.Menu;\nimport android.widget.TextView;\nimport android.widget.Toast;\n\npublic class ViewAttributesActivity extends Activity {\n\n\t@Override\n\tprotected void onCreate(Bundle savedInstanceState) {\n\t\tsuper.onCreate(savedInstanceState);\n\t\tsetContentView(R.layout.activity_view_attributes);\n\t\tTextView tvMain = (TextView) findViewById(R.id.tvMain);\n\t\tLog.d(\"DEBUG\", tvMain.getText().toString());\n\t\tToast.makeText(this, tvMain.getText().toString(), Toast.LENGTH_SHORT).show();\n\t}\n\n\t@Override\n\tpublic boolean onCreateOptionsMenu(Menu menu) {\n\t\t// Inflate the menu; this adds items to the action bar if it is present.\n\t\tgetMenuInflater().inflate(R.menu.activity_view_attributes, menu);\n\t\treturn true;\n\t}\n\n}\n"
  },
  {
    "path": "app/src/main/res/drawable/simple_list_selector.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector\n    xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:state_focused=\"true\" android:drawable=\"@color/blue\" /> <!-- focused -->\n    <item android:state_pressed=\"true\" android:drawable=\"@color/blue\" /> <!-- pressed -->\n    <item android:drawable=\"@color/dark_blue\" />\n</selector>"
  },
  {
    "path": "app/src/main/res/layout/activity_action_bar_menu.xml",
    "content": "<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    tools:context=\".ActionBarMenuActivity\" >\n\n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerHorizontal=\"true\"\n        android:layout_centerVertical=\"true\"\n        android:textSize=\"20sp\"\n        android:text=\"Try My Action Bar!\" />\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_async_task_perform.xml",
    "content": "<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    tools:context=\".AsyncTaskPerformActivity\" >\n\n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerHorizontal=\"true\"\n        android:layout_centerVertical=\"true\"\n        android:text=\"AsyncTask in Progress\" />\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_basic_click_handlers.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".BasicClickHandlersActivity\" >\n\n    <TextView\n        android:id=\"@+id/textView1\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"@string/hello_world\" />\n\n    <Button\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginTop=\"20dp\"\n        android:onClick=\"firstButtonClicked\"\n        android:text=\"XML onClick\" />\n\n    <Button\n        android:id=\"@+id/btnClick2\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginTop=\"20dp\"\n        android:text=\"Java onClick\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_basic_image_download.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".BasicImageDownloadActivity\" >\n\n    <ImageView\n        android:id=\"@+id/ivBasicImage\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:src=\"@drawable/ic_launcher\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_basic_text_view.xml",
    "content": "<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    tools:context=\".BasicTextViewActivity\" >\n\n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerHorizontal=\"true\"\n        android:layout_centerVertical=\"true\"\n        android:textSize=\"20sp\"\n        android:text=\"@string/second_textview\" />\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_basic_views.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".BasicViewsActivity\" >\n\n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_margin=\"20dp\"\n        android:text=\"@string/hello_world\" />\n\n    <EditText\n        android:id=\"@+id/editText1\"\n        android:hint=\"Demo\"\n        android:layout_margin=\"20dp\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:ems=\"10\" >\n\n        <requestFocus />\n    </EditText>\n\n    <Button\n        android:id=\"@+id/button1\"\n        android:layout_margin=\"20dp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"Button\" />\n\n    <ImageView\n        android:layout_margin=\"20dp\"\n        android:id=\"@+id/imageView1\"\n        android:contentDescription=\"Demo Image\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:src=\"@drawable/ic_launcher\" />\n\n    <ImageButton\n        android:layout_margin=\"20dp\"\n        android:id=\"@+id/imageButton1\"\n        android:contentDescription=\"Demo Image\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:src=\"@drawable/ic_launcher\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_button_toast.xml",
    "content": "<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    tools:context=\".ButtonToastActivity\" >\n\n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerHorizontal=\"true\"\n        android:layout_centerVertical=\"true\"\n        android:text=\"@string/hello_world\" />\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_contact_list.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".ContactListActivity\" >\n\n    <ListView\n        android:id=\"@+id/lvContacts\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\" >\n    </ListView>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_demo_selector.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/llContentLayout\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".DemoSelector\" >\n\n    <ExpandableListView\n        android:id=\"@+id/elvChapters\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\" >\n    </ExpandableListView>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_explicit_intent.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".ExplicitIntentActivity\" >\n\n    <Button\n        android:id=\"@+id/btnLaunchSecond\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"Launch Second Activity\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_grid_view_demo.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".GridViewDemoActivity\" >\n\n    <GridView\n        android:id=\"@+id/gvImages\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:numColumns=\"2\" >\n    </GridView>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_implicit_intents.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".ImplicitIntentsActivity\" >\n\n    <EditText\n        android:id=\"@+id/txtUrlAddress\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:inputType=\"textUri\"\n        android:hint=\"Enter URL Address\"\n        android:ems=\"10\" >\n\n        <requestFocus />\n    </EditText>\n\n    <Button\n        android:id=\"@+id/button1\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_horizontal\"\n        android:layout_marginTop=\"20dp\"\n        android:onClick=\"visitUrlAddress\"\n        android:text=\"Visit\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_intent_with_result.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".IntentWithResultActivity\" >\n\n    <Button\n        android:id=\"@+id/button1\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:onClick=\"enterText\"\n        android:text=\"Launch Activity for Result\" />\n\n    <TextView\n        android:id=\"@+id/txtDisplayResult\"\n        android:layout_marginTop=\"20dp\"\n        android:textSize=\"20sp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"No Result Yet!\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_layout_gravity.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".LayoutGravityActivity\" >\n\n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginTop=\"30dp\"\n        android:text=\"Gravity Left\" />\n    \n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center\"\n        android:layout_marginTop=\"30dp\"\n        android:text=\"Gravity Center\" />\n    \n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"right\"\n        android:layout_marginTop=\"30dp\"\n        android:text=\"Gravity Right\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_linear_layout_demo.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".LinearLayoutDemoActivity\" >\n\n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"Wrap Content\" />\n\n    <TextView\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"Match Parent\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_list_view_clicks.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".SimpleListViewActivity\" >\n\n    <ListView\n        android:id=\"@+id/lvDemo\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\" >\n    </ListView>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_persist_settings.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".ToastFormInputsActivity\" >\n\n    <EditText\n        android:id=\"@+id/txtPersistText\"\n        android:layout_marginTop=\"10dp\"\n        android:layout_width=\"match_parent\"\n        android:hint=\"Enter Text\"\n        android:layout_height=\"wrap_content\"\n        android:ems=\"10\" />\n\n    <CheckBox\n        android:id=\"@+id/chkPersistState\"\n        android:layout_marginTop=\"10dp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"Check or Uncheck\" />\n\n    <Button\n        android:id=\"@+id/btnPersistValues\"\n        android:layout_marginTop=\"10dp\"\n        android:onClick=\"persistValues\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"Submit\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_progress_bar.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:layout_gravity=\"center_horizontal\"\n    android:orientation=\"vertical\"\n    tools:context=\".ProgressBarActivity\" >\n\n    <LinearLayout\n        android:id=\"@+id/llLoadUrls\"\n        android:layout_marginTop=\"20dp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_horizontal\" >\n\n        <ProgressBar\n            android:id=\"@+id/pgDownloading\"\n            style=\"@android:style/Widget.ProgressBar.Horizontal\"\n            android:layout_width=\"100dp\"\n            android:layout_height=\"wrap_content\"\n            android:layout_gravity=\"center_vertical\"\n            android:indeterminate=\"false\"\n            android:max=\"100\" />\n\n        <Button\n            android:id=\"@+id/button1\"\n            android:layout_marginLeft=\"10dp\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:onClick=\"startFourUrlAsync\"\n            android:layout_gravity=\"center_vertical\"\n            android:text=\"Load Url Responses\" />\n        \n    </LinearLayout>\n\n    <TextView\n        android:id=\"@+id/txtUrlOutput\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_horizontal\"\n        android:layout_marginTop=\"24dp\"\n        android:text=\"Responses Live Here\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_publishing_instructions.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".PublishingInstructionsActivity\" >\n    \n    <TextView\n        android:id=\"@+id/textView2\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:gravity=\"center_horizontal\"\n        android:textSize=\"25sp\"\n        android:padding=\"10dp\"\n        android:layout_marginBottom=\"20dp\"\n        android:text=\"Publishing Instructions\" />\n\n    <TextView\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:textSize=\"15sp\" \n        android:textStyle=\"bold\"\n        android:paddingLeft=\"20dp\"\n        android:paddingRight=\"20dp\"\n        android:layout_marginBottom=\"10dp\"\n        android:text=\"1. Export your application as an APK (Android Package) file.\" />\n\n    <TextView\n        android:id=\"@+id/textView1\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:paddingLeft=\"20dp\"\n        android:paddingRight=\"20dp\"\n        android:textStyle=\"bold\"\n        android:textSize=\"15sp\"\n        android:layout_marginBottom=\"10dp\"\n        android:text=\"2. Generate your own self-signed certificate and digitally sign your application with it.\" />\n\n    <TextView\n        android:id=\"@+id/textView3\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:textSize=\"15sp\"\n        android:textStyle=\"bold\"\n        android:paddingLeft=\"20dp\"\n        android:paddingRight=\"20dp\"\n        android:layout_marginBottom=\"10dp\"\n        android:text=\"3. Deploy the signed application.\" />\n\n    <TextView\n        android:id=\"@+id/textView4\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:textSize=\"15sp\"\n        android:textStyle=\"bold\"\n        android:paddingLeft=\"20dp\"\n        android:paddingRight=\"20dp\"\n        android:layout_marginBottom=\"10dp\"\n        android:text=\"4. Use the Android Market for hosting and selling your application.\" />\n    \n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_simple_bundle_demo.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".SimpleBundleDemoActivity\" >\n\n    <TextView\n        android:id=\"@+id/tvDisplayText\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"No Passed Bundle :(\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_simple_list_view.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".SimpleListViewActivity\" >\n\n    <ListView\n        android:id=\"@+id/lvDemo\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\" >\n    </ListView>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_simple_return_result.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".SimpleReturnResultActivity\" >\n\n    <EditText\n        android:id=\"@+id/txtRandomResultText\"\n        android:hint=\"Enter Any Text\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:ems=\"10\" >\n\n        <requestFocus />\n    </EditText>\n\n    <Button\n        android:id=\"@+id/btnSubmit\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:onClick=\"sendResult\"\n        android:layout_marginTop=\"20dp\"\n        android:text=\"Send Result\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_smart_image_download.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".SmartImageDownloadActivity\" >\n\n    <ImageView\n        android:id=\"@+id/ivSmartImage\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:src=\"@drawable/ic_launcher\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_spinner_with_toast.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".SpinnerWithToastActivity\" >\n\n    <Spinner\n        android:id=\"@+id/spnOptions\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_horizontal\"\n        android:gravity=\"fill_horizontal\" />\n\n    <Button\n        android:id=\"@+id/btnSpinnerValue\"\n        android:onClick=\"displayVal\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center_horizontal\"\n        android:text=\"Toast Selected\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_time_picker_demo.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".TimePickerDemoActivity\" >\n\n    <TimePicker\n        android:id=\"@+id/tpTime\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginTop=\"29dp\" />\n\n    <Button\n        android:id=\"@+id/btnDisplayTime\"\n        android:layout_width=\"wrap_content\"\n        android:onClick=\"displayTime\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginTop=\"20dp\"\n        android:text=\"Submit\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_toast_form_inputs.xml",
    "content": "<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:id=\"@+id/LinearLayout1\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    android:orientation=\"vertical\"\n    tools:context=\".ToastFormInputsActivity\" >\n\n    <EditText\n        android:id=\"@+id/etVal\"\n        android:layout_marginTop=\"10dp\"\n        android:layout_width=\"match_parent\"\n        android:hint=\"Enter Text\"\n        android:layout_height=\"wrap_content\"\n        android:ems=\"10\" />\n\n    <CheckBox\n        android:id=\"@+id/chkVal\"\n        android:layout_marginTop=\"10dp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"Check or Uncheck\" />\n\n    <RadioGroup\n        android:id=\"@+id/rdgVal\"\n        android:layout_marginTop=\"10dp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\" >\n\n        <RadioButton\n            android:id=\"@+id/rbOne\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:checked=\"true\"\n            android:text=\"First\" />\n\n        <RadioButton\n            android:id=\"@+id/rbTwo\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"Second\" />\n        \n        <RadioButton\n            android:id=\"@+id/rbThree\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"Three\" />\n    </RadioGroup>\n\n    <Button\n        android:id=\"@+id/button1\"\n        android:layout_marginTop=\"10dp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:onClick=\"toastInputs\"\n        android:text=\"Submit\" />\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/activity_view_attributes.xml",
    "content": "<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    tools:context=\".ViewAttributesActivity\" >\n\n    <TextView\n        android:id=\"@+id/tvMain\"\n        android:background=\"#06327a\"\n        android:textColor=\"#cbd9f0\"\n        android:padding=\"15dp\"\n        android:layout_marginTop=\"10dp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerHorizontal=\"true\"\n        android:layout_centerVertical=\"false\"\n        android:text=\"Identified TextView\" />\n\n</RelativeLayout>"
  },
  {
    "path": "app/src/main/res/layout/simple_list_view_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<TextView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:padding=\"5dp\"\n    android:textSize=\"15sp\"\n    android:background=\"@drawable/simple_list_selector\"\n    android:layout_height=\"match_parent\"\n    android:textColor=\"#8ab1dd\" >\n</TextView>"
  },
  {
    "path": "app/src/main/res/menu/activity_action_bar_menu.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n\t\tandroid:id=\"@+id/menu_toast\"\n\t\tandroid:icon=\"@drawable/ic_launcher\"\n\t\tandroid:showAsAction=\"ifRoom|withText\"\n\t\tandroid:title=\"Toast\" />\n    \n    <item\n\t\tandroid:id=\"@+id/menu_launch\"\n\t\tandroid:icon=\"@drawable/ic_launcher\"\n\t\tandroid:showAsAction=\"ifRoom|withText\"\n\t\tandroid:title=\"Second\" />\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_async_task_perform.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_basic_click_handlers.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_basic_image_download.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_basic_text_view.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_basic_views.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_button_toast.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_contact_list.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_demo_selector.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_explicit_intent.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_grid_view_demo.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_implicit_intents.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_intent_with_result.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_layout_gravity.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_linear_layout_demo.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_list_view_clicks.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_persist_settings.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_progress_bar.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_publishing_instructions.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_simple_bundle_demo.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_simple_list_view.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_simple_return_result.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_smart_image_download.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_spinner_with_toast.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_time_picker_demo.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_toast_form_inputs.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/menu/activity_view_attributes.xml",
    "content": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n    <item\n        android:id=\"@+id/menu_settings\"\n        android:orderInCategory=\"100\"\n        android:showAsAction=\"never\"\n        android:title=\"@string/menu_settings\"/>\n\n</menu>"
  },
  {
    "path": "app/src/main/res/values/colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"blue\">#4b6d92</color>\n    <color name=\"other_blue\">#71869e</color>\n    <color name=\"dark_blue\">#213851</color>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/exercises_list.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string-array name=\"chapters\">\n       <item>App Fundamentals</item>\n       <item>User Interface</item>\n       <item>View Controls</item>\n       <item>User Interactions</item>\n       <item>User Flows</item>\n       <item>Networking</item>\n       <item>Advanced Views</item>\n       <item>Preferences</item>\n       <item>Content Providers</item>\n       <item>Publishing</item>\n    </string-array>\n    \n    <string-array name=\"chap1\">\n        <item>Basic TextView</item>\n    </string-array>\n    <string-array name=\"chap2\">\n        <item>Linear Layout Demo</item>\n    </string-array>\n    <string-array name=\"chap3\">\n        <item>Layout Gravity</item>\n        <item>Basic Views</item>\n        <item>View Attributes</item>\n        <item>Simple ListView</item>\n    </string-array>\n    <string-array name=\"chap4\">\n        <item>Basic Click Handlers</item>\n        <item>Handling ListView Clicks</item>\n    </string-array>\n    <string-array name=\"chap5\">\n        <item>Explicit Intents</item>\n        <item>Implicit Intents</item>\n        <item>Intent with Results</item>\n        <item>Action Bar</item>\n    </string-array>\n    <string-array name=\"chap6\">\n        <item>Basic Image Download</item>\n        <item>AsyncTask</item>\n        <item>Smart Image Download</item>\n    </string-array>\n    <string-array name=\"chap7\">\n        <item>Toast Inputs</item>\n        <item>Spinner Toast</item>\n        <item>TimePicker</item>\n        <item>ProgressBar</item>\n        <item>GridView</item>\n    </string-array>\n    <string-array name=\"chap8\">\n        <item>Persist Settings</item>\n    </string-array>\n    <string-array name=\"chap9\">\n        <item>Contact List</item>\n    </string-array>\n    <string-array name=\"chap10\">\n        <item>APK Instructions</item>\n    </string-array>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/spinner_values.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string-array name=\"spinner_options\">\n       <item>Red</item>\n       <item>Orange</item>\n       <item>Yellow</item>\n       <item>Green</item>\n       <item>Blue</item>\n       <item>Indigo</item>\n       <item>Violet</item>\n    </string-array>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n    <string name=\"app_name\">CodePath Android Demo</string>\n    <string name=\"hello_world\">Hello world!</string>\n    <string name=\"menu_settings\">Settings</string>\n    <string name=\"title_activity_basic_text_view\">Basic TextView</string>\n    <!-- Chapter 1, Exercise 3: Add string for basic textview -->\n    <string name=\"second_textview\">Second TextView for Chapter 1</string>\n    <string name=\"title_activity_linear_layout_demo\">LinearLayoutDemoActivity</string>\n    <string name=\"title_activity_layout_gravity\">LayoutGravityActivity</string>\n    <string name=\"title_activity_basic_views\">BasicViewsActivity</string>\n    <string name=\"title_activity_view_attributes\">ViewAttributesActivity</string>\n    <string name=\"title_activity_simple_list_view\">SimpleListViewActivity</string>\n    <string name=\"title_activity_basic_click_handlers\">BasicClickHandlersActivity</string>\n    <string name=\"title_activity_button_toast\">ButtonToastActivity</string>\n    <string name=\"title_activity_list_view_clicks\">ListViewClicksActivity</string>\n    <string name=\"title_activity_explicit_intent\">ExplicitIntentActivity</string>\n    <string name=\"title_activity_implicit_intents\">ImplicitIntentsActivity</string>\n    <string name=\"title_activity_intent_with_result\">IntentWithResultActivity</string>\n    <string name=\"title_activity_action_bar_menu\">ActionBarMenuActivity</string>\n    <string name=\"title_activity_simple_bundle_demo\">SimpleBundleDemoActivity</string>\n    <string name=\"title_activity_simple_return_result\">SimpleReturnResultActivity</string>\n    <string name=\"title_activity_basic_image_download\">BasicImageDownloadActivity</string>\n    <string name=\"title_activity_async_task_perform\">AsyncTaskPerformActivity</string>\n    <string name=\"title_activity_smart_image_download\">SmartImageDownloadActivity</string>\n    <string name=\"title_activity_toast_form_inputs\">ToastFormInputsActivity</string>\n    <string name=\"title_activity_spinner_with_toast\">SpinnerWithToastActivity</string>\n    <string name=\"title_activity_time_picker_demo\">TimePickerDemoActivity</string>\n    <string name=\"title_activity_progress_bar\">ProgressBarActivity</string>\n    <string name=\"title_activity_grid_view_demo\">GridViewDemoActivity</string>\n    <string name=\"title_activity_persist_settings\">PersistSettingsActivity</string>\n    <string name=\"title_activity_contact_list\">ContactListActivity</string>\n    <string name=\"title_activity_publishing_instructions\">PublishingInstructionsActivity</string>\n\n</resources>"
  },
  {
    "path": "app/src/main/res/values/styles.xml",
    "content": "<resources>\n\n    <!--\n        Base application theme, dependent on API level. This theme is replaced\n        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.\n    -->\n    <style name=\"AppBaseTheme\" parent=\"android:Theme.Light\">\n        <!--\n            Theme customizations available in newer API levels can go in\n            res/values-vXX/styles.xml, while customizations related to\n            backward-compatibility can go here.\n        -->\n    </style>\n\n    <!-- Application theme. -->\n    <style name=\"AppTheme\" parent=\"AppBaseTheme\">\n        <!-- All customizations that are NOT specific to a particular API-level can go here. -->\n    </style>\n\n</resources>"
  },
  {
    "path": "app/src/main/res/values-v11/styles.xml",
    "content": "<resources>\n\n    <!--\n        Base application theme for API 11+. This theme completely replaces\n        AppBaseTheme from res/values/styles.xml on API 11+ devices.\n    -->\n    <style name=\"AppBaseTheme\" parent=\"android:Theme.Holo.Light\">\n        <!-- API 11 theme customizations can go here. -->\n    </style>\n\n</resources>"
  },
  {
    "path": "app/src/main/res/values-v14/styles.xml",
    "content": "<resources>\n\n    <!--\n        Base application theme for API 14+. This theme completely replaces\n        AppBaseTheme from BOTH res/values/styles.xml and\n        res/values-v11/styles.xml on API 14+ devices.\n    -->\n    <style name=\"AppBaseTheme\" parent=\"android:Theme.Holo.Light.DarkActionBar\">\n        <!-- API 14 theme customizations can go here. -->\n    </style>\n\n</resources>"
  },
  {
    "path": "build.gradle",
    "content": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\nbuildscript {\n    repositories {\n        jcenter()\n        google()\n    }\n    dependencies {\n        classpath 'com.android.tools.build:gradle:3.5.0'\n    }\n}\n\nallprojects {\n    repositories {\n        jcenter()\n        google()\n    }\n}\n"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "content": "#Sat Aug 24 23:02:30 PDT 2019\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-5.4.1-all.zip\n"
  },
  {
    "path": "gradle.properties",
    "content": "android.enableJetifier=true\nandroid.useAndroidX=true"
  },
  {
    "path": "gradlew",
    "content": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS=\"\"\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn ( ) {\n    echo \"$*\"\n}\n\ndie ( ) {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\nesac\n\n# For Cygwin, ensure paths are in UNIX format before anything is touched.\nif $cygwin ; then\n    [ -n \"$JAVA_HOME\" ] && JAVA_HOME=`cygpath --unix \"$JAVA_HOME\"`\nfi\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >&-\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >&-\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin, switch paths to Windows format before running java\nif $cygwin ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=$((i+1))\n    done\n    case $i in\n        (0) set -- ;;\n        (1) set -- \"$args0\" ;;\n        (2) set -- \"$args0\" \"$args1\" ;;\n        (3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        (4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        (5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        (6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        (7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        (8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        (9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules\nfunction splitJvmOpts() {\n    JVM_OPTS=(\"$@\")\n}\neval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS\nJVM_OPTS[${#JVM_OPTS[*]}]=\"-Dorg.gradle.appname=$APP_BASE_NAME\"\n\nexec \"$JAVACMD\" \"${JVM_OPTS[@]}\" -classpath \"$CLASSPATH\" org.gradle.wrapper.GradleWrapperMain \"$@\"\n"
  },
  {
    "path": "gradlew.bat",
    "content": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@rem  Gradle startup script for Windows\r\n@rem\r\n@rem ##########################################################################\r\n\r\n@rem Set local scope for the variables with windows NT shell\r\nif \"%OS%\"==\"Windows_NT\" setlocal\r\n\r\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\r\nset DEFAULT_JVM_OPTS=\r\n\r\nset DIRNAME=%~dp0\r\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\r\nset APP_BASE_NAME=%~n0\r\nset APP_HOME=%DIRNAME%\r\n\r\n@rem Find java.exe\r\nif defined JAVA_HOME goto findJavaFromJavaHome\r\n\r\nset JAVA_EXE=java.exe\r\n%JAVA_EXE% -version >NUL 2>&1\r\nif \"%ERRORLEVEL%\" == \"0\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:findJavaFromJavaHome\r\nset JAVA_HOME=%JAVA_HOME:\"=%\r\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\r\n\r\nif exist \"%JAVA_EXE%\" goto init\r\n\r\necho.\r\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\r\necho.\r\necho Please set the JAVA_HOME variable in your environment to match the\r\necho location of your Java installation.\r\n\r\ngoto fail\r\n\r\n:init\r\n@rem Get command-line arguments, handling Windowz variants\r\n\r\nif not \"%OS%\" == \"Windows_NT\" goto win9xME_args\r\nif \"%@eval[2+2]\" == \"4\" goto 4NT_args\r\n\r\n:win9xME_args\r\n@rem Slurp the command line arguments.\r\nset CMD_LINE_ARGS=\r\nset _SKIP=2\r\n\r\n:win9xME_args_slurp\r\nif \"x%~1\" == \"x\" goto execute\r\n\r\nset CMD_LINE_ARGS=%*\r\ngoto execute\r\n\r\n:4NT_args\r\n@rem Get arguments from the 4NT Shell from JP Software\r\nset CMD_LINE_ARGS=%$\r\n\r\n:execute\r\n@rem Setup the command line\r\n\r\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\r\n\r\n@rem Execute Gradle\r\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%\r\n\r\n:end\r\n@rem End local scope for the variables with windows NT shell\r\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n\r\n:fail\r\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\nrem the _cmd.exe /c_ return code!\r\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\nexit /b 1\r\n\r\n:mainEnd\r\nif \"%OS%\"==\"Windows_NT\" endlocal\r\n\r\n:omega\r\n"
  },
  {
    "path": "settings.gradle",
    "content": "include ':app'\n"
  }
]