Метод setDataAndType
Метод setDataAndType класса
Intent
ставит и
Uri,
и строку MIME.
Отдельные
setData
и
setType
могут затирать друг друга,
поэтому для пары Uri+type нужен этот метод.
Синтаксис
intent.setDataAndType(uri, "text/plain")
Параметры
| Параметр | Описание |
|---|---|
data |
Uri ресурса, который открывают или отправляют. |
type |
MIME-тип данных по этому Uri. |
Пример
Давайте отправим файл как text/plain через content Uri:
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Button(onClick = {
val uri = Uri.parse("content://example/abcde")
val intent = Intent(Intent.ACTION_SEND)
intent.setDataAndType(uri, "text/plain")
intent.putExtra(Intent.EXTRA_STREAM, uri)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
startActivity(intent)
}) {
Text(text = "12345")
}
}
}
}
На экране появится выбор приложения для отправки данных с заданным Uri и типом.
Пример
Давайте откроем VIEW с типом image/png:
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.Text
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Button(onClick = {
val uri = Uri.parse("content://example/12345.png")
val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(uri, "image/png")
startActivity(intent)
}) {
Text(text = "abcde")
}
}
}
}
На экране система предложит просмотр картинки подходящим приложением.
Смотрите также
-
метод
setData,
только Uri без MIME -
метод
setType,
только MIME без Uri -
метод
addFlags,
например FLAG_GRANT_READ_URI_PERMISSION -
класс
FileProvider,
безопасный content Uri для файлов