Intent ANDROID CLUB 2015 Сегодня Intent Структура Intent 2 вида намерения Фильтр намерения Что такое Intent? Намерение Пример: 1. Открыть другой Activity 2. Сделать звонок 3. Запустить браузер 4. Открыть камеру 5. Отправить e-mail 6. Показывать карту Intent: пример Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); Структура Intent action – действие ACTION_DIAL, ACTION_CALL, ACTION_ANSWER, ACTION_VIEW data– данные URI: http, tel, geo, content category – дополнительная информация о действии CATEGORY_LAUNCHER, CATEGORY_BROWSABLE type – тип данных text/plain, text/html, image/jpg, image/png component – определенный класс MainActivity.class, SecondActivity.class extras – дополнение putExtra(“parol”,”1234”); flag - FLAG_ACTIVITY_NO_HISTORY, FLAG_ACTIVITY_NO_ANIMATION action: пример Intent intent = new Intent(); intent.setAction(Intent.ACTION_DIAL); startActivity(intent); action+data: пример Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); Uri data = Uri.parse("tel:+998903735173"); intent.setData(data); startActivity(intent); action+data: практика Создавайте Intent Действие: ACTION_DIAL Данные: Телефон вашего друга Поставьте кнопку. При нажатии кнопки набирайте номер вашего друга action+data: пример 2 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri data = Uri.parse("geo:41.28,69.27"); intent.setData(data); startActivity(intent); action+data: практика 2 Создавайте Intent Действие: ACTION_VIEW Данные: http://www.androidclub.uz Поставьте кнопку. При нажатии кнопки открывайте сайт Android Club category: пример CATEGORY_BROWSABLE CATEGORY_LAUNCHER Используется для неявного Intent type: пример Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, 1); switch(requestCode) { case 1: if(resultCode == RESULT_OK){ try { final Uri imageUri = intent.getData(); final InputStream imageStream = getContentResolver().openInputStream(imageUri); final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream); ImageView ivPhoto = (ImageView) findViewById(R.id.ivPhoto); ivPhoto.setImageBitmap(selectedImage); } catch (FileNotFoundException e) { e.printStackTrace(); } } } type: практика Создавайте Intent Тип данных: file/* С помощью этого Intent, запустите менеджер файлов и выберите файла В результате получите путь к файлу с помощью метода getPath() В результате показывайте путь к файлу extras: пример Intent intent = new Intent(); Uri uri = Uri.parse("mailto:"); intent.setAction(Intent.ACTION_SEND); intent.setData(uri); intent.setType("text/plain"); String[] to = {"[email protected]","[email protected]"}; intent.putExtra(Intent.EXTRA_EMAIL, to); intent.putExtra(Intent.EXTRA_CC, to); intent.putExtra(Intent.EXTRA_SUBJECT, "Homework - Activity"); intent.putExtra(Intent.EXTRA_TEXT, "Hello I have done homework"); startActivity(intent); extras: практика Создавайте Intent Дейсвие: ACTION_VIEW Данные: Uri со схемой “smsto:” Тип данных: “vnd.android-dir/mms-sms” Дополнение 1: address = +998903735173 Дополнение 2: sms_body = “Hello Android” C помощью этого Intent запустите программу для отправки SMS flag: пример Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATI ON); startActivity(intent); flag: практика Сделайте так чтобы Activity2 не сохранилось в backstack Подсказка: FLAG_ACTIVITY_NO_HISTORY 2 вида Intent(намерение) 1. Явные намерения 2. Неявные намерения 1. Явные намерения: пример Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); 1. Явные намерения: практика Поставьте кнопку При нажатии этой кнопки открывайте ThirdActivity 2. Неявные намерения: пример Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri address = Uri.parse("http://www.androidclub.uz"); intent.setData(address); startActivity(intent); 2. Неявные намерения: практика Создавайте Intent Действие: ACTION_VIEW Данные: Uri со схемой tel tel:+998903735173 Поставьте кнопку, который набирает номер: +998903735173 Фильтры намерения: пример <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="http"/> </intent-filter> Фильтры намерения: практика Создавайте проект: CustomDialer Добавьте фильтр намерения для один из Activity Действие: VIEW, DIAL Категория: DEFAULT, BROWSABLE Данные: cхема – tel Запускайте этот проект После этого, запускайте предыдущий проект который набирает номер