Главная /
Разработка приложений для Android 4.0
Разработка приложений для Android 4.0 - ответы на тесты Интуит
Целью тестирования является определение уровня знаний разработчиков для платформы Android версии 4.0.
Список вопросов:
- # Требуется определить, разрешается ли пакету com.company.app начать телефонный звонок без обращения к Диалоговому интерфейсу. Какой фрагмент кода может быть использован для этого?
- # На сайте размещено приложение. Как пользователь сможет установить это приложение?
- # Для каждого объекта Activity в приложении Android используется стиль:
- # Нужно осуществить разрешение для URI контент-провайдера. Вы хотите указать путь, начинающийся с /contacts/. Какую конфигурацию для вашей службы необходимо поместить в файл AndroidManifest.xml?
- # <permission-group android:description="@string/groupNetwork" android:icon="@drawable/networkIcon" android:label="@string/groupNetworkLabel" android:name="@string/groupNetwork" /> Для чего предназначен код?
- # WebView myWebView = (WebView)findViewById(R.id.webview); myWebView.loadUrl{"http://www.example.com"); Как убедиться в работоспособности кода?
- # Одиночное действие должно быть определено в файле AndroidManifest.xml и доступно под двумя названиями, с двумя отдельными наборами фильтров. Какой атрибут для этого используется?
- # Нужно осуществить разрешение для URI контент-провайдера. Вы хотите указать путь, начинающийся с /contacts/. Какую конфигурацию для вашей службы необходимо поместить в файл AndroidManifest.xml?
- # Необходимо проверить имеет ли вызываемый процесс разрешение для программного доступа к сервису. Что для этого используется?
- # Что произойдет в том случае, если элемент <application> и элемент потомок <activity> имеют атрибуты иконок и меток?
- # SharedPreferences settings = getSharedPreferences("MyPreferencesFileName", Context.MODE_PRIVATE); SharedPreferences.Editor pe = settings.edit(); pe.putString("MyText", "Hello!"); pe.commit(); Другие приложения должны иметь доступ "только для чтения" к персональным настройкам Вашего приложения. Какое изменение осуществит данную возможность?
- # Одиночное действие должно быть определено в файле AndroidManifest.xml и доступно под двумя названиями, с двумя отдельными наборами фильтров. Какой атрибут для этого используется?
- # На Android market опубликовано приложение, в файле манифеста которого прописана 5-я версия maxSdk. От пользователей поступают жалобы, что после обновления Android до версии 2.0.1 (API level 6) они не могут использовать данное приложение. После какого обновления приложение сможет работать на новой версии Android?
- # Где хранится сертификат приложения (cert.rsa) при построении в APK?
- # <xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.app"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic1_launcher" android:label="@string/app1_name" > <activity android:label=@string/app1_name" android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <application android:icon="@drawable/ic2_launcher" android:label="App#2" > <activity android:label="App#2" android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> Почему данные на выходе некорректны?
- # Вы представили обновленную версию приложения, которое опубликовано на Android market. Тем не менее, вы получаете сообщения, что, когда люди пытаются установить обновление, оно устанавливается в качестве нового приложения, а не как обновление. Что вызывает данную проблему?
- # На Android market опубликовано приложение, в файле манифеста которого прописана 5-я версия maxSdk. От пользователей поступают жалобы, что после обновления Android до версии 2.0.1 (API level 6) они не могут использовать данное приложение. После какого обновления приложение сможет работать на новой версии Android?
- # Реализован простой класс, осуществляющий SQLiteOpenHelper. Также данный класс содержит методы для выполнения различных операций с базами данных, таких как создание записей клиентов. Большинство операций используют простой метод execSQL(). Однако существует более сложная операция, требующая псевдонимы столбцов. Какой класс может быть использован для создания более сложных SQL запросов?
- # public class CustomerDBHelper extends SQLiteOpenHelper { CustomerDBHelper(Context context) { super(context, "CustomerDatabase", null, 1); } @Override public void onCreate(SQLiteOatabase db) { db.execSQL("CREATE TABLE customers (lastName TEXT);"); } } Почему данный класс НЕ может быть скомпилирован?
- # Файлы сохраняются на устройстве внутренней памяти. Что будет с файлами, когда пользователь удалит приложение?
- # File file = new File(myContext.getExternalFilesDir(null), "appData.txt"); try { FileOutputStream os = new FileOutputStream(file, true); OutputStreamWriter out = new OutputStreamWriter(os); out.write{data); out.close(); } catch (e) { } При компиляции ошибок не обнаружено, все переменные имеют корректные значения, устройства внешней памяти установлены и доступны. Какие еще условия должны быть соблюдены, чтобы с помощью данного кода можно было успешно сохранить файл с данными?
- # Устанавливается приложение на устройство с операционной системой Android 4.0. Для воспроизведения аудио потоков из сети Интернет, приложение использует класс MediaPlayer. В предыдущих версиях Android все работало, однако в Android 4.0 поток не воспроизводится. Код приложения не дорабатывался и не предъявлялись никакие дополнительные требования. Что нужно изменить, чтобы аудио потоки воспроизводились всеми версиями Android, включая 4.0?
- # Мобильные устройства часто подсоединяются к удаленным объектам через сеть, например, точки доступа Wi-Fi. Для безопасного соединения ваше устройство всякий раз должно:
- # Приложение сохраняет медиа файлы в одной из директорий SD карты. Необходимо, что данные файлы не могли быть обнаружены с помощью Media Scanner. Какие действия должны быть предприняты?
- # 1: boolean mExternalStorageAvailable = false; 2: boolean mExtemalStorageWriteable = false; 3: String state = Environment.getExternalStorageState{) ; 4: 5: if (Environment.MEDIA_MOUNTED.equals(state)) { 6: mExternalStorageAvailable = mExternalStorageWriteable = AAA; 7: } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 8: mExternalStorageAvailable = BBB; 9: mExternalStorageWriteable = CCC; 10: } else { 11: mExternalStorageAvailable = mExternalStorageWriteable = DDD; 12: } Необходимо установить значения флагов mExternalStorageAvailable и mExternalStorageWriteable, которые позволят корректно отобразить состояние внешнего устройства. Какие значения должны быть вместо AAA, BBB, CCC и DDD (строки 6, 8, 9 и 11 соответственно)?
- # public void onResume() { super.onResume() ; if (NfcAdapter.XXXXXXXXXX.equals(getlntent().getAction())) { Parcelable[] rawMsgs = intent.getParcelableArrayExtra( NfcAdapter.EXTRA_NDEF_MESSAGES ); if (rawMsgs != null) { msgs = new NdefMessage[rawMsgs.length]; for (int i = 0; i < rawMsgs.length; i++) { msgs[i] = (NdefMessage) rawMsgs[i]; } } } } Необходимо активировать действие кода как часть NDEF. Полезная нагрузка проявляется при получении NFC метки. Какая константа заменит XXXXXXXXXX?
- # Если пользователи жалуются на то, что во время сохранения данных на удаленном сервере быстро заканчивается батарея, разработчик должен убедиться в том, что приложение не:
- # public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.mainnenu, menu); return false; } Меню, реализованное с помощью данного фрагмента кода, не отображается. Программа не выдает никаких сообщений об ошибках. Что может быть возможной причиной?
- # public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedlnstanceState) ; setContentView(R.layout.main); getLoaderManager().initLoader(0, null, this); } @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { // Create and return a new Loader } } Что надо добавить в исходный код, чтобы метод onCreateLoader выполнялся при создании нового объекта класса Loader?
- # public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedlnstanceState) ; setContentView(R.layout.main); getLoaderManager().initLoader(0, null, this); } @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { // Create and return a new Loader } } Как убедиться что onCreateLoader() запускается, когда нужен новый Loader?
- # Вы используете класс ListActivity, чтобы отобразить экран с одним Listview, из которого пользователь выбирает пункт. Вы хотите настроить отображение этого экрана. Предполагая, что отображение определено, какая строка кода позволит вам задать пользовательский макет с именем my_custom_layout?
- # public class MyActivity extends Activity implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.main); } } Какая проблема проиллюстрирована с помощью данного кода?
- # Fragment должен быть всегда определен в:
- # Какой метод не участвует в жизненном цикле Activity
- # Какие разделы могут быть пропущены при создании провайдера, потребляющего контент?
- # Когда происходит запуск действия с использованием метода startActivityForResult(), другие действия считаются
- # Виджет ListView получает сообщения от:
- # Какой класс асинхронно соединяет и контролирует источники данных и передает их клиенту?
- # Разрабатывается приложение, в котором должна быть возможность добавлять события в пользовательский календарь. В файле AndroidManifest.xml не нужно настраивать никакие дополнительные разрешения. Как достигнуть данной цели?
- # Какая последовательность обработчиков обратного вызова класса Activity выполняется сначала?
- # Необходимо сохранить личные файлы, созданные в приложении. Нужен только список имен файлов. Какой метод необходимо использовать?
- # Необходимо отобразить данные контент-провайдера в ListView. Какую колонку нужно вернуть как часть записи контент-провайдера?
- # Виртуальное устройство Android – это:
- # Какое из средств отладки вы используете, чтобы делать скриншоты приложений, запущенных на устройстве?
- # Какая команда используется для просмотра результатов отладки?
- # Для каких интегрированных сред (IDE) Google предлагает надстройки для разработки под Android?
- # public class greeter { public String buildGreeting(String firstName) { String greetingl = "Hello, "; String greeting2 = ", and welcome to the application!"; return greetingl + firstName + greeting2; } public StringBuffer getGreeting{String firstName) { StringBuffer sb = new StringBuffer(); sb.append(buildGreeting(firstName)); return sb; } } Как вызвать метод getGreeting(), не создавая временных объектов?
- # Необходимо проверить, необходим ли каждый элемент строкового типа приложению. Запуск приложения производится в режиме эмулятора, на языке, установленном по умолчанию. Как осуществить проверку?
- # Необходимо получить удаленный доступ к системе для сохранения данных. Удаленная система имеет REST интерфейс. В приложения могут быть добавлены только библиотеки Android.
- # Вы просматриваете результаты трассировки вашего приложения. Приложение создает потоки, чтобы справиться с интенсивно-вычислительной работой. Вы знаете, что приложение создает несколько потоков в течение определенного времени, однако в результатах трассировки видите только один. Что вызывает данную проблему?
- # package company.app.aidl; interface IMathService { // INSERT CODE HERE } На месте комментария должен быть метод, в который можно передать два целых значения, перемножить их и вернуть результат. Это:
- # Вы пытаетесь устранить неполадки приложения с помощью журнала регистрации. На выходе слишком много данных, которые могут быть использованы. Вы должны ограничить количество данных на выходе. Необходимо получить данные отладки от ActivityManager, а также от приложения (используется метка CustomerProcessor). Какие фильтры необходимо использовать для получения необходимых данных?
- # Вы работаете с кодом, использующим базу данных SQLite. SQL запросы не возвращают ожидаемых значений. Необходимо проверить некорректные данные и структуры таблиц, когда приложение будет запущено в режиме эмулятора. Какой инструмент вы используете для устранения неполадок базы данных?
- # Какая команда отправляет файл myFile.txt из директории /work/project1 на устройство Android в директорию /sdcard/myProject?
- # Java файлы с исходным кодом, применяемые на платформе Android, относятся к типу
- # Какой класс используется для отправки СМС-сообщений?
- # Необходимо создать образ SD карты с файловой системой FAT32, который может быть протестирован на устройствах с различными конфигурациями. Какая программа позволит создать данный образ?
- # Для разделения приложений, Android присваивает каждому:
- # Во время отладки объем памяти, используемой приложением, увеличивается, потому что:
- # Какая команда используется, для того чтобы увидеть результат отладки?
- # Запущен долговременный процесс, и вы не хотите, чтобы он влиял на поток UI. Вы решили создать новый поток, но не хотите писать шаблонный код для управления потоками? Какой класс предлагает необходимую функциональность?
- # Приложение становится менее производительным всякий раз, когда загружается фоновая служба. Данное приложение использует эту фоновую службу. Во время работы службы пользовательский интерфейс перестает отвечать. Почему страдает производительность приложения, когда работает данная служба?
- # Вызывается метод, выполняемый в IBinder и изначально созданный другим процессом. Что происходит с методом?
- # Приложение пытается соединиться со службой другого разработчика. Код, отвечающий за освобождение ресурсов, отсутствует. Во время теста приложение отключается из-за недостаточного количества ресурсов. Проблема возникла из-за того, что вы не вызвали:
- # 1: public class ProgressTestActivity extends Activity { 2: 3: private Handler handler; 4: private ProgressBar progress; 5: 6: @Override 7: public void onCreate{Bundle savedInstanceState) { 8: super.onCreate(savedInstanceState); 9: setContentView(R.layout.main); 10: progress = (ProgressBar)findViewById(R.id.progressBar); 11: handler = new Handler(); 12: } 13: 14: public void startProgress(View view) { 15: Runnable runnable = new Runnable() { 16: @Override 17: public void run() { 18: for (int i = 0; i <= 10; i++) { 19: final int value = i; 20: try { 21: Thread.sleep(2000); 22: } catch {InterruptedException e) { } 23: handler.post(new Runnable() { 24: @Override 25: public void XXX() { 26: progress.setProgress(value); 27: } 28: }); 29: } 30: } 31: }; 32: new Thread(runnable).start(); 33: } 34: } Какой метод заменит XXX в 25-й строке, для того чтобы progress bar периодически обновлялась?
- # В приложении появляется диалоговое окно с сообщением Application Not Responding. В приложении один экран с несколькими текстовыми полями, кнопка "Сохранить" данные в текстовый файл и приемник, запускающийся, когда пользователь нажимает на кнопку "Сохранить". Сто тестов показали, что данные успешно сохраняются в текстовый файл, однако диалоговое окно с сообщением ANR появляется случайным образом. Какая причина появления данного диалогового окна?
- # // This method comes from an Activity class. public void onClick(View v) { new Thread(new Runnable () { public void run() { Bitmap b = loadImageFromNetwork("http://example.com/image.png"); mImageView.setImageBitmap(b); } }).start(); } Почему код не осуществляет ожидаемых действий?
- # LocationManager manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_LOW); String provider = manager.getBestProvider(criteria, false); Location location = locationManager.getLastKnownLocation(provider); Чтобы убедиться, что точность расположения менее, чем 100 метров, нужно:
- # Что НЕ может делать приемник?
- # public class MyPhoneReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if (extras != null) { String state = extras.getString(TelephonyManager.EXTRA_STATE); if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { // INSERT CODE HERE Log.w("DEBUG", phoneNumber); } } } Нужно сохранить входящие телефонные номера. Какая строка кода должна быть на месте комментария?
- # Действие в приложении запускается, если указано полное имя класса в Intents, и не запускается во всех остальных случаях. Как неявно убедиться в том, что действие будет запущено?
- # Intent i = new Intent(Intent.ACTION_VIEW); Bundle b = new Bundle(); b.putString("EMAIL", "abc@xyz.com"); Как, присоединив Bundle к Intent, к Intent можно передать следующее действие? Какая строка кода описывает эту возможность?
- # Необходимо отправить Intent так, чтобы оно продолжало существовать после передачи сообщения об успешном завершении. Данные должны быть доступны. Какой тип Intent должен быть использован?
- # Действие A запускает B, которое запускает C. Действие A работает вместо B, когда пользователь нажимает кнопку назад из действия C. Какой флаг может быть использован для проверки того, что A работает вместо B?
- # Категории используются для:
- # Intent intent = new Intent(Intent.ACTION_VIEW); Uri u = Uri.parse("http://www.google.com"); intent.setData(u); Какой код нужно добавить, чтобы запустить браузер и отобразить страницу www.google.com?
- # // onCreate() method from your searchable Activity class @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.search); Intent intent = getIntent(); if (Intent.ACTION_SEARCH.equals(intent.getAction())) { String query = intent.getStringExtra(SearchManager.QUERY); doMySearch(query); } } Как проверить, что действие запущено, когда пользователь выполняет поиск в виджете?
- # При попытке вставки данных с клавиатуры, создаются объекты ClipData, запрашивающие:
- # Необходимо добавить поисковый интерфейс в приложение. Android должен контролировать все события, связанные с поиском. Также интерфейс должен включаться во все действия, которые вызывают его. Какой интерфейс нужно использовать для поиска?
- # <LinearLayout android:orientation="vertical"> <Button android:id="@+id/Button1" /> <Button android:id="@+id/Button2" /> </LinearLayout> Пример кода взят из макета XML файла. Необходимо убедиться, что Button 1 будет находиться в фокусе, после того как пользователь сместит курсор ниже Button 2. Какую конструкцию вы бы добавили?
- # Вы устанавливаете меню в приложение. Вы создали XML файл mainMenu.xml и разместили его в папке assets/menu. Когда вы попытаетесь создать меню, используя getMenuInflater().inflate(R.menu.mainMenu, viewGroup), меню не создается. Какое действие должно быть предпринято для устранения данной проблемы?
- # Приложение разработано для устройств, поддерживающих французский язык. Файл с соответствующими настройками хранится по адресу res/values-fr-rFR/strings.xml. На одном из экранов приложения метка текстового поля отображается на английском языке. Почему метка текстового поля не отображается на французском?
- # Создается пользовательский интерфейс. Необходимо использовать макет, который позволит указывать отношения между элементами предками и потомками. Какой макет необходимо использовать?
- # NinePatchDrawable – это растровое изображение, которое
- # Для того чтобы включать в приложение статические файлы и обращаться к ним во время работы программы, необходимо:
- # Синтаксис android:id="@+id/foo" – это XML-макет используемый для:
- # Вы работаете с главным действием приложения. Требуется, чтобы действие, запускаемое после главного, было не во весь экран. Как этого добиться?
- # public class MyCustomViewView extends View { private Paint mTextPaint; private String mText; private int mAscent; public MyCustomViewView(Context context, AttributeSet attrs) { super(context, attrs); mTextPaint = new Paint(); mTextPaint.setAntiAlias(true); mTextPaint.setTextSize( 16 * getResources().getDisplayMetrics().density ); mTextPaint.setColor(0xFF000000); setPadding(3, 3, 3, 3); mAscent = (int) mTextPaint.ascent(); TypedArray a = context.obtainStyledAttributes( attrs, R.styleable.MyCustomViewView ); CharSequence s = a.getString (R.styleable.text); this.mText = s.toString(); invalidate(); requestLayout(); a.recycle(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawText( mText, getPaddingLeft(), getPaddingTop() - mAscent, mTextPaint ); } } Какого размера будет изображение?
- # Какие четыре типа диалоговых окон есть в Android?
- # Context context = getApplicationContext{); CharSequence text = "Data operation is complete"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast makeText(context, text, duration); // INSERT CODE HERE toast.show(); Какая строка кода должна быть на месте комментария, чтобы разместить всплывающее окно Toast в верхнем левом углу экрана?
- # <?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/myLogo1" /> <item android:drawable="@drawable/myLogo2" /> </transition> Перемещение за 1 секунду в коде класса View осуществляется с помощью:
- # К стилям и темам, предлагаемым платформой Android, можно получить доступ через:
- # В проект импортированы файлы, которые размещены в папке /assets. Однако приложению нельзя ссылаться на данные файлы, используя сгенерированный файл R.java. Файлы можно сделать доступными приложению, если:
- # String lc = context.getResources().getConfiguration().locale.getLanguage(); Что нужно заменить в коде, чтобы можно было использовать язык стандарта ISO?
- # Какие макеты допускается использовать при разработке виджетов для рабочего стола?
- # MyActivity.java --------------- package com.example.app; import android.app.Activity; import android.os.Bundle; public class ExampleActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyDrawView(this)); } } MyDrawView.java --------------- package com.example.all; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; public class MyDrawView extends View { public MyDrawView(Context context) { super(context); } protected void onDrawView(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.GREEN); paint.setTextSize(25); paint.setAntiAlias(true); canvas.drawText("Hello World", 5, 30, paint); } } Построение и развертывание приложения производятся правильно. Какие ошибки в коде приведут к тому, что текст НЕ будет отображаться полностью?