我正在使用读写权限来访问外部存储并获取权限,我正在使用权限处理程序包
AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
为了获得用户的许可
var status = await Permission.storage.request();
if (status.isGranted) {
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (context) => const Home())
);
} else if (status.isPermanentlyDenied) {
openAppSettings();
}
Run Code Online (Sandbox Code Playgroud)
上述权限和代码适用于 Android 版本 12 之前的版本,但当涉及 Android 版本 13 时,它无法正常工作,它只是打开应用程序设置而不是询问权限
我在 Jetpack Compose 与导航结合使用时遇到了奇怪的行为:如果您在某些导航可组合项中使用 RememberSaveable,则状态不会按承诺保存(例如,旋转后会丢失)。这是一个简单的例子:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material.MaterialTheme
import androidx.compose.material.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
MyScreen()
}
}
}
}
@Composable
fun MyScreen() {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "xyz") {
composable("xyz") {
var value by rememberSaveable { mutableStateOf("") }
TextField(value = value, onValueChange = …Run Code Online (Sandbox Code Playgroud) android-architecture-navigation android-jetpack-compose jetpack-compose-navigation