Разработка приложений для Android 4.0 - ответы
Количество вопросов - 88
<permission-group android:description="@string/groupNetwork" android:icon="@drawable/networkIcon" android:label="@string/groupNetworkLabel" android:name="@string/groupNetwork" />Для чего предназначен код?
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) { }При компиляции ошибок не обнаружено, все переменные имеют корректные значения, устройства внешней памяти установлены и доступны. Какие еще условия должны быть соблюдены, чтобы с помощью данного кода можно было успешно сохранить файл с данными?
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 boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.mainnenu, menu); return false; }Меню, реализованное с помощью данного фрагмента кода, не отображается. Программа не выдает никаких сообщений об ошибках. Что может быть возможной причиной?
package company.app.aidl; interface IMathService { // INSERT CODE HERE }На месте комментария должен быть метод, в который можно передать два целых значения, перемножить их и вернуть результат. Это:
// 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(); }Почему код не осуществляет ожидаемых действий?
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); } }}Нужно сохранить входящие телефонные номера. Какая строка кода должна быть на месте комментария?
<LinearLayout android:orientation="vertical"> <Button android:id="@+id/Button1" /> <Button android:id="@+id/Button2" /> </LinearLayout>Пример кода взят из макета XML файла. Необходимо убедиться, что Button 1 будет находиться в фокусе, после того как пользователь сместит курсор ниже Button 2. Какую конструкцию вы бы добавили?
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 ); } }Какого размера будет изображение?
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 в верхнем левом углу экрана?
WebView myWebView = (WebView)findViewById(R.id.webview); myWebView.loadUrl{"http://www.example.com");Как убедиться в работоспособности кода?
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 CustomerDBHelper extends SQLiteOpenHelper { CustomerDBHelper(Context context) { super(context, "CustomerDatabase", null, 1); } @Override public void onCreate(SQLiteOatabase db) { db.execSQL("CREATE TABLE customers (lastName TEXT);"); } }Почему данный класс НЕ может быть скомпилирован?
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 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?
// 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); } }Как проверить, что действие запущено, когда пользователь выполняет поиск в виджете?
<?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 осуществляется с помощью:
Intent i = new Intent(Intent.ACTION_VIEW); Bundle b = new Bundle(); b.putString("EMAIL", "abc@xyz.com");Как, присоединив Bundle к Intent, к Intent можно передать следующее действие? Какая строка кода описывает эту возможность?
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(), не создавая временных объектов?
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); } }Построение и развертывание приложения производятся правильно. Какие ошибки в коде приведут к тому, что текст НЕ будет отображаться полностью?
<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>Почему данные на выходе некорректны?
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 периодически обновлялась?
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 MyActivity extends Activity implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.main); } }Какая проблема проиллюстрирована с помощью данного кода?
Intent intent = new Intent(Intent.ACTION_VIEW); Uri u = Uri.parse("http://www.google.com"); intent.setData(u);Какой код нужно добавить, чтобы запустить браузер и отобразить страницу www.google.com?