diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
index 45126ce3..c5e7e483 100644
--- a/.github/workflows/android.yml
+++ b/.github/workflows/android.yml
@@ -13,10 +13,10 @@ jobs:
steps:
- uses: actions/checkout@v3
- - name: set up JDK 11
+ - name: set up JDK 17
uses: actions/setup-java@v3
with:
- java-version: '11'
+ java-version: '17'
distribution: 'temurin'
cache: gradle
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..2b594fc1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,35 @@
+# Activity #2 Homework
+
+Создайте в модуле **sender** класс **SenderActivity**. Добавьте в него три кнопки: **“To Google Maps”**, **“Send Email”** и **“Open Receiver”**. Добавьте пустые обработчики нажатий на эти кнопки.
+
+1. По клику на кнопку **“To Google Maps”**, используя явный `Intent` вызовите `Activity` приложения Google Maps. После того как Google Maps поймает ваш Intent, в нем должны отобразиться ближайшие к текущей геолокации места по тэгу “*Рестораны”*
+
+
+
+2. По клику на кнопку **“Send Email”** отправьте неявный `Intent` в метод `startActivity()` Этот `Intent` должны уметь обработать любые почтовые клиенты(если они реализовали `intent-filter` согласно контракту).
+ В качестве адресата используйте ящик *android@otus.ru*, тему и содержание письма придумайте сами.
+
+
+
+3. По клику на кнопку **“Open Receiver”** отправьте неявный `Intent` со следующими параметрами:
+
+ - `action = Action.SEND`
+ - `type = “text/plain”`
+ - `category = Category.DEFAULT`
+
+ В качестве extras отправьте три объекта String. В качестве значений extras используйте любой набор данных из файла *payload.txt*, который лежит в корне проекта **sender**.
+
+ В модуле **receiver** зарегистрируйте `intent-filter`, таким образом, чтобы он поймал отправленный выше `Intent` и открыл **ReceiverActivity**. Полученные из `Intent` extras отобразите в соответсвующих полях:
+
+ - title → `titleTextView`
+ - year → `yearTextView`
+ - description → `descriptionTextView`
+ - В зависимости от названия фильма отобразите картинку которая лежит в ресурсах(*res/drawable*) в `posterImageView`
+
+> 💡 Чтобы достать ресурс, используйте метод [Context.getDrawable()](https://developer.android.com/reference/android/content/Context#getDrawable(int)), а чтобы поменять картинку в ImageView используйте метод [setImageDrawable()](https://developer.android.com/reference/android/widget/ImageView#setImageDrawable(android.graphics.drawable.Drawable))
+
+
+
+4. Оба приложения установлены
+ ./gradlew :sender:installDebug
+ ./gradlew :receiver:installDebug
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 811aafa1..00000000
--- a/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
deleted file mode 100644
index 08ea3c61..00000000
--- a/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- Activities
-
\ No newline at end of file
diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml
deleted file mode 100644
index fa0f996d..00000000
--- a/app/src/main/res/xml/backup_rules.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml
deleted file mode 100644
index 9ee9997b..00000000
--- a/app/src/main/res/xml/data_extraction_rules.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/art/Untitled 1.png b/art/Untitled 1.png
new file mode 100644
index 00000000..1aaa83a5
Binary files /dev/null and b/art/Untitled 1.png differ
diff --git a/art/Untitled 2.png b/art/Untitled 2.png
new file mode 100644
index 00000000..73978454
Binary files /dev/null and b/art/Untitled 2.png differ
diff --git a/art/Untitled.png b/art/Untitled.png
new file mode 100644
index 00000000..bc696335
Binary files /dev/null and b/art/Untitled.png differ
diff --git a/build.gradle b/build.gradle
index 8ec48d7a..8368207b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
- id 'com.android.application' version '8.4.0' apply false
- id 'com.android.library' version '8.4.0' apply false
+ id 'com.android.application' version '8.2.2' apply false
+ id 'com.android.library' version '8.2.2' apply false
id 'org.jetbrains.kotlin.android' version '1.9.23' apply false
id "io.gitlab.arturbosch.detekt" version "1.21.0"
}
diff --git a/app/.gitignore b/receiver/.gitignore
similarity index 100%
rename from app/.gitignore
rename to receiver/.gitignore
diff --git a/receiver/build.gradle b/receiver/build.gradle
new file mode 100644
index 00000000..243c0925
--- /dev/null
+++ b/receiver/build.gradle
@@ -0,0 +1,60 @@
+plugins {
+ id 'com.android.application'
+ id 'org.jetbrains.kotlin.android'
+ id("io.gitlab.arturbosch.detekt")
+}
+
+android {
+ compileSdk 34
+
+ defaultConfig {
+ applicationId "otus.gpb.homework.activities.receiver"
+ minSdk 23
+ targetSdk 34
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+ namespace 'otus.gpb.homework.activities.receiver'
+ buildFeatures {
+ viewBinding true
+ }
+}
+
+detekt {
+ source = files("src/main/java", "src/main/kotlin")
+ config = files("$rootDir/config/detekt/detekt.yml")
+}
+
+tasks.named("detekt").configure {
+ reports {
+ txt.required.set(true)
+ html.required.set(false)
+ md.required.set(false)
+ xml.required.set(false)
+ sarif.required.set(false)
+ html.outputLocation.set(file("build/reports/detekt/detekt.html"))
+ }
+}
+
+dependencies {
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.6.1'
+ implementation 'com.google.android.material:material:1.12.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/receiver/proguard-rules.pro
similarity index 100%
rename from app/proguard-rules.pro
rename to receiver/proguard-rules.pro
diff --git a/receiver/src/main/AndroidManifest.xml b/receiver/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..148f47a5
--- /dev/null
+++ b/receiver/src/main/AndroidManifest.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/receiver/src/main/java/otus/gpb/homework/activities/receiver/ReceiverActivity.kt b/receiver/src/main/java/otus/gpb/homework/activities/receiver/ReceiverActivity.kt
new file mode 100644
index 00000000..d9887ede
--- /dev/null
+++ b/receiver/src/main/java/otus/gpb/homework/activities/receiver/ReceiverActivity.kt
@@ -0,0 +1,53 @@
+package otus.gpb.homework.activities.receiver
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import otus.gpb.homework.activities.receiver.databinding.ActivityReceiverBinding
+import java.util.Locale
+
+class ReceiverActivity : AppCompatActivity() {
+
+ private lateinit var binding: ActivityReceiverBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityReceiverBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ android.util.Log.d("RECEIVER_DEBUG", "ReceiverActivity created")
+ android.util.Log.d("RECEIVER_DEBUG", "Intent action: ${intent.action}")
+ android.util.Log.d("RECEIVER_DEBUG", "Intent type: ${intent.type}")
+
+ handleIntent(intent)
+ }
+
+ override fun onNewIntent(intent: Intent?) {
+ super.onNewIntent(intent)
+ intent?.let { handleIntent(it) }
+ }
+
+ private fun handleIntent(intent: Intent) {
+ val title = intent.getStringExtra("title") ?: "No title"
+ val year = intent.getStringExtra("year") ?: "No year"
+ val description = intent.getStringExtra("description") ?: "No description"
+
+ binding.titleTextView.text = title
+ binding.yearTextView.text = year
+ binding.descriptionTextView.text = description
+
+ setPosterImage(title)
+ }
+
+ private fun setPosterImage(movieTitle: String) {
+ val drawableResId = when (movieTitle.lowercase(Locale.ROOT)) {
+ "interstellar" -> R.drawable.interstellar
+ "inception" -> R.drawable.inception
+ "niceguys" -> R.drawable.niceguys
+ else -> R.drawable.interstellar
+ }
+
+ val drawable = getDrawable(drawableResId)
+ binding.posterImageView.setImageDrawable(drawable)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/receiver/src/main/res/drawable-v24/ic_launcher_foreground.xml
similarity index 100%
rename from app/src/main/res/drawable-v24/ic_launcher_foreground.xml
rename to receiver/src/main/res/drawable-v24/ic_launcher_foreground.xml
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/receiver/src/main/res/drawable/ic_launcher_background.xml
similarity index 100%
rename from app/src/main/res/drawable/ic_launcher_background.xml
rename to receiver/src/main/res/drawable/ic_launcher_background.xml
diff --git a/receiver/src/main/res/drawable/inception.png b/receiver/src/main/res/drawable/inception.png
new file mode 100644
index 00000000..6bdc6b91
Binary files /dev/null and b/receiver/src/main/res/drawable/inception.png differ
diff --git a/receiver/src/main/res/drawable/inters_tellar.png b/receiver/src/main/res/drawable/inters_tellar.png
new file mode 100644
index 00000000..6bdc6b91
Binary files /dev/null and b/receiver/src/main/res/drawable/inters_tellar.png differ
diff --git a/receiver/src/main/res/drawable/interstellar.webp b/receiver/src/main/res/drawable/interstellar.webp
new file mode 100644
index 00000000..9038385b
Binary files /dev/null and b/receiver/src/main/res/drawable/interstellar.webp differ
diff --git a/receiver/src/main/res/drawable/nic_guys.png b/receiver/src/main/res/drawable/nic_guys.png
new file mode 100644
index 00000000..9616054c
Binary files /dev/null and b/receiver/src/main/res/drawable/nic_guys.png differ
diff --git a/receiver/src/main/res/drawable/niceguys.webp b/receiver/src/main/res/drawable/niceguys.webp
new file mode 100644
index 00000000..b66234f3
Binary files /dev/null and b/receiver/src/main/res/drawable/niceguys.webp differ
diff --git a/receiver/src/main/res/layout/activity_receiver.xml b/receiver/src/main/res/layout/activity_receiver.xml
new file mode 100644
index 00000000..6e89c012
--- /dev/null
+++ b/receiver/src/main/res/layout/activity_receiver.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/receiver/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
rename to receiver/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/receiver/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
similarity index 100%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
rename to receiver/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/receiver/src/main/res/mipmap-hdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-hdpi/ic_launcher.webp
rename to receiver/src/main/res/mipmap-hdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/receiver/src/main/res/mipmap-hdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
rename to receiver/src/main/res/mipmap-hdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/receiver/src/main/res/mipmap-mdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-mdpi/ic_launcher.webp
rename to receiver/src/main/res/mipmap-mdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/receiver/src/main/res/mipmap-mdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
rename to receiver/src/main/res/mipmap-mdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/receiver/src/main/res/mipmap-xhdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-xhdpi/ic_launcher.webp
rename to receiver/src/main/res/mipmap-xhdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/receiver/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
rename to receiver/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/receiver/src/main/res/mipmap-xxhdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
rename to receiver/src/main/res/mipmap-xxhdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/receiver/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
rename to receiver/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/receiver/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
rename to receiver/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/receiver/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
rename to receiver/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/values-night/themes.xml b/receiver/src/main/res/values-night/themes.xml
similarity index 100%
rename from app/src/main/res/values-night/themes.xml
rename to receiver/src/main/res/values-night/themes.xml
diff --git a/app/src/main/res/values/colors.xml b/receiver/src/main/res/values/colors.xml
similarity index 100%
rename from app/src/main/res/values/colors.xml
rename to receiver/src/main/res/values/colors.xml
diff --git a/receiver/src/main/res/values/strings.xml b/receiver/src/main/res/values/strings.xml
new file mode 100644
index 00000000..47a1c9b0
--- /dev/null
+++ b/receiver/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ Receiver
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/receiver/src/main/res/values/themes.xml
similarity index 100%
rename from app/src/main/res/values/themes.xml
rename to receiver/src/main/res/values/themes.xml
diff --git a/sender/.gitignore b/sender/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/sender/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/app/build.gradle b/sender/build.gradle
similarity index 88%
rename from app/build.gradle
rename to sender/build.gradle
index 07e82a52..905a4bc3 100644
--- a/app/build.gradle
+++ b/sender/build.gradle
@@ -8,7 +8,7 @@ android {
compileSdk 34
defaultConfig {
- applicationId "otus.gpb.homework.activities"
+ applicationId "otus.gpb.homework.activities.sender"
minSdk 23
targetSdk 34
versionCode 1
@@ -30,7 +30,7 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
- namespace 'otus.gpb.homework.activities'
+ namespace 'otus.gpb.homework.activities.sender'
buildFeatures {
viewBinding true
}
@@ -56,4 +56,5 @@ dependencies {
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.12.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
}
\ No newline at end of file
diff --git a/sender/payload.txt b/sender/payload.txt
new file mode 100644
index 00000000..9ed9d009
--- /dev/null
+++ b/sender/payload.txt
@@ -0,0 +1,7 @@
+title: Славные парни
+year: 2016
+description: Что бывает, когда напарником брутального костолома становится субтильный лопух? Наемный охранник Джексон Хили и частный детектив Холланд Марч вынуждены работать в паре, чтобы распутать плевое дело о пропавшей девушке, которое оборачивается преступлением века. Смогут ли парни разгадать сложный ребус, если у каждого из них – свои, весьма индивидуальные методы.
+
+title: Интерстеллар
+year: 2014
+description: Когда засуха, пыльные бури и вымирание растений приводят человечество к продовольственному кризису, коллектив исследователей и учёных отправляется сквозь червоточину (которая предположительно соединяет области пространства-времени через большое расстояние) в путешествие, чтобы превзойти прежние ограничения для космических путешествий человека и найти планету с подходящими для человечества условиями.
\ No newline at end of file
diff --git a/sender/proguard-rules.pro b/sender/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/sender/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/sender/src/main/AndroidManifest.xml b/sender/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..8bc8598d
--- /dev/null
+++ b/sender/src/main/AndroidManifest.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sender/src/main/java/otus/gpb/homework/activities/sender/Payload.kt b/sender/src/main/java/otus/gpb/homework/activities/sender/Payload.kt
new file mode 100644
index 00000000..5a0b139e
--- /dev/null
+++ b/sender/src/main/java/otus/gpb/homework/activities/sender/Payload.kt
@@ -0,0 +1,7 @@
+package otus.gpb.homework.activities.sender
+
+data class Payload(
+ val title: String,
+ val year: String,
+ val description: String
+)
\ No newline at end of file
diff --git a/sender/src/main/java/otus/gpb/homework/activities/sender/SenderActivity.kt b/sender/src/main/java/otus/gpb/homework/activities/sender/SenderActivity.kt
new file mode 100644
index 00000000..139fdeaf
--- /dev/null
+++ b/sender/src/main/java/otus/gpb/homework/activities/sender/SenderActivity.kt
@@ -0,0 +1,94 @@
+package otus.gpb.homework.activities.sender
+
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import otus.gpb.homework.activities.sender.databinding.ActivitySenderBinding
+
+class SenderActivity : AppCompatActivity() {
+
+ private lateinit var binding: ActivitySenderBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivitySenderBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ setupClickListeners()
+ }
+
+ private fun setupClickListeners() {
+ binding.toGoogleMapsButton.setOnClickListener {
+ openGoogleMaps()
+ }
+
+ binding.sendEmailButton.setOnClickListener {
+ sendEmail()
+ }
+
+ binding.openReceiverButton.setOnClickListener {
+ openReceiver()
+ }
+
+ binding.toGoogleMapsButton.isEnabled = true
+ binding.sendEmailButton.isEnabled = true
+ binding.openReceiverButton.isEnabled = true
+ }
+
+ private fun openGoogleMaps() {
+ try {
+ val intent = Intent(Intent.ACTION_VIEW).apply {
+ data = Uri.parse("geo:0,0?q=restaurants")
+ setPackage("com.google.android.apps.maps")
+ }
+
+ if (intent.resolveActivity(packageManager) != null) {
+ startActivity(intent)
+ } else {
+ val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com/maps/search/restaurants"))
+ startActivity(webIntent)
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+
+ private fun sendEmail() {
+ try {
+ val intent = Intent(Intent.ACTION_SENDTO).apply {
+ data = Uri.parse("mailto:android@otus.ru")
+ putExtra(Intent.EXTRA_SUBJECT, "Homework Activity #2")
+ putExtra(Intent.EXTRA_TEXT, "Hello from OTUS Android Developer course!")
+ }
+
+ val chooser = Intent.createChooser(intent, "Send Email")
+ startActivity(chooser)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+
+ private fun openReceiver() {
+ try {
+ val intent = Intent().apply {
+ action = Intent.ACTION_SEND
+ type = "text/plain"
+ addCategory(Intent.CATEGORY_DEFAULT)
+
+ putExtra("title", "Interstellar")
+ putExtra("year", "2014")
+ putExtra("description", "Когда засуха, пыльные бури и вымирание растений приводят человечество к продовольственному кризису, коллектив исследователей и учёных отправляется сквозь червоточину в путешествие, чтобы превзойти прежние ограничения для космических путешествий человека и найти планету с подходящими для человечества условиями.")
+ }
+
+ if (intent.resolveActivity(packageManager) != null) {
+ startActivity(intent)
+ } else {
+ android.widget.Toast.makeText(this, "No app found to handle this intent", android.widget.Toast.LENGTH_SHORT).show()
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ android.widget.Toast.makeText(this, "Error: ${e.message}", android.widget.Toast.LENGTH_SHORT).show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/sender/src/main/res/drawable-v24/ic_launcher_foreground.xml b/sender/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/sender/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sender/src/main/res/drawable/ic_launcher_background.xml b/sender/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/sender/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sender/src/main/res/layout/activity_sender.xml b/sender/src/main/res/layout/activity_sender.xml
new file mode 100644
index 00000000..2e606ea5
--- /dev/null
+++ b/sender/src/main/res/layout/activity_sender.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sender/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/sender/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/sender/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/sender/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/sender/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..eca70cfe
--- /dev/null
+++ b/sender/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/sender/src/main/res/mipmap-hdpi/ic_launcher.webp b/sender/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 00000000..c209e78e
Binary files /dev/null and b/sender/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/sender/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/sender/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..b2dfe3d1
Binary files /dev/null and b/sender/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/sender/src/main/res/mipmap-mdpi/ic_launcher.webp b/sender/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 00000000..4f0f1d64
Binary files /dev/null and b/sender/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/sender/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/sender/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..62b611da
Binary files /dev/null and b/sender/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/sender/src/main/res/mipmap-xhdpi/ic_launcher.webp b/sender/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 00000000..948a3070
Binary files /dev/null and b/sender/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/sender/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/sender/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..1b9a6956
Binary files /dev/null and b/sender/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/sender/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/sender/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..28d4b77f
Binary files /dev/null and b/sender/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/sender/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/sender/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9287f508
Binary files /dev/null and b/sender/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/sender/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/sender/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..aa7d6427
Binary files /dev/null and b/sender/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/sender/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/sender/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9126ae37
Binary files /dev/null and b/sender/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/sender/src/main/res/values-night/themes.xml b/sender/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..b34635aa
--- /dev/null
+++ b/sender/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/sender/src/main/res/values/colors.xml b/sender/src/main/res/values/colors.xml
new file mode 100644
index 00000000..f8c6127d
--- /dev/null
+++ b/sender/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/sender/src/main/res/values/strings.xml b/sender/src/main/res/values/strings.xml
new file mode 100644
index 00000000..5846443c
--- /dev/null
+++ b/sender/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ Sender
+
\ No newline at end of file
diff --git a/sender/src/main/res/values/themes.xml b/sender/src/main/res/values/themes.xml
new file mode 100644
index 00000000..49485436
--- /dev/null
+++ b/sender/src/main/res/values/themes.xml
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index d84a9a21..8d8594c3 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -13,4 +13,5 @@ dependencyResolutionManagement {
}
}
rootProject.name = "Activities"
-include ':app'
+include ':sender'
+include ':receiver'