JetPack构成伴奏者权限,可以访问本地文件
我想使用放置在LIBS目录中的密钥库文件。 我在androidManifest.xl
中添加了权限,
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-sdk tools:overrideLibrary="com.github.dhaval2404.colorpicker,com.datacap.device_connection" />
<uses-permission android:name="com.google.android.things.permission.MANAGE_INPUT_DRIVERS"/>
我还请在运行时使用cancerist Permissions
以这种方式:
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun PermissionsRequest(
permissions: List<String>,
deniedMessage: String,
rationaleMessage: String
) {
val multiplePermissionsState = rememberMultiplePermissionsState(permissions = permissions)
HandelRequest(
multiplePermissionsState = multiplePermissionsState,
deniedContent = { shouldShowRationale ->
PermissionDeniedContent(
deniedMessage = deniedMessage,
rationaleMessage = rationaleMessage,
shouldShowRationale = shouldShowRationale,
onRequestPermission = { multiplePermissionsState.launchMultiplePermissionRequest() }
)
},
content = {}
)
}
@Composable
fun Content(text: String, showButton: Boolean = true, onClick: () -> Unit) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(50.dp)
.background(color = Color.Gray),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = text, textAlign = TextAlign.Center)
Spacer(modifier = Modifier.height(12.dp))
if (showButton) {
Button(onClick = onClick) {
Text(text = "Give Permission")
}
}
}
}
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun HandelRequest(
multiplePermissionsState: MultiplePermissionsState,
deniedContent: @Composable (Boolean) -> Unit,
content: @Composable () -> Unit
) {
var shouldShowRationale by remember { mutableStateOf(false) }
val result = multiplePermissionsState.permissions.all {
shouldShowRationale = it.status.shouldShowRationale
it.status == PermissionStatus.Granted
}
if (!result) deniedContent(shouldShowRationale)
}
@ExperimentalPermissionsApi
@Composable
fun PermissionDeniedContent(
deniedMessage: String,
rationaleMessage: String,
shouldShowRationale: Boolean,
onRequestPermission: () -> Unit
) {
if (shouldShowRationale) {
AlertDialog(
onDismissRequest = {},
title = {
Text(
text = "Permission Request",
style = TextStyle(
fontSize = MaterialTheme.typography.h6.fontSize,
fontWeight = FontWeight.Bold
)
)
},
text = {
Text(rationaleMessage)
},
confirmButton = {
Button(onClick = onRequestPermission) {
Text("Give Permission")
}
}
)
} else {
Content(text = deniedMessage, onClick = onRequestPermission)
}
}
我要求这些权限:
val PERMISSIONS_LIST = listOf(Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
在应用程序上,在App第一次运行i上获取权限请求,我给它一个访问权限的是使用相机和录制视频,这是第二个用于访问照片和媒体内容的视频。
但是我仍然一次又一次地遇到同样的错误:
失败,例外:java.io.filenotfoundexception:app/libs/keystore/keypos.jks:open失败:enoent(no uke file或目录)
如何解决此问题?由于这个问题,我无法使用SSL设置。
I want to use a keystore file that I placed in libs directory.
i added the permissions in the AndroidManifest.xl
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-sdk tools:overrideLibrary="com.github.dhaval2404.colorpicker,com.datacap.device_connection" />
<uses-permission android:name="com.google.android.things.permission.MANAGE_INPUT_DRIVERS"/>
I requested the permission during runtime as well using a Accompanist Permissions
this way:
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun PermissionsRequest(
permissions: List<String>,
deniedMessage: String,
rationaleMessage: String
) {
val multiplePermissionsState = rememberMultiplePermissionsState(permissions = permissions)
HandelRequest(
multiplePermissionsState = multiplePermissionsState,
deniedContent = { shouldShowRationale ->
PermissionDeniedContent(
deniedMessage = deniedMessage,
rationaleMessage = rationaleMessage,
shouldShowRationale = shouldShowRationale,
onRequestPermission = { multiplePermissionsState.launchMultiplePermissionRequest() }
)
},
content = {}
)
}
@Composable
fun Content(text: String, showButton: Boolean = true, onClick: () -> Unit) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(50.dp)
.background(color = Color.Gray),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = text, textAlign = TextAlign.Center)
Spacer(modifier = Modifier.height(12.dp))
if (showButton) {
Button(onClick = onClick) {
Text(text = "Give Permission")
}
}
}
}
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun HandelRequest(
multiplePermissionsState: MultiplePermissionsState,
deniedContent: @Composable (Boolean) -> Unit,
content: @Composable () -> Unit
) {
var shouldShowRationale by remember { mutableStateOf(false) }
val result = multiplePermissionsState.permissions.all {
shouldShowRationale = it.status.shouldShowRationale
it.status == PermissionStatus.Granted
}
if (!result) deniedContent(shouldShowRationale)
}
@ExperimentalPermissionsApi
@Composable
fun PermissionDeniedContent(
deniedMessage: String,
rationaleMessage: String,
shouldShowRationale: Boolean,
onRequestPermission: () -> Unit
) {
if (shouldShowRationale) {
AlertDialog(
onDismissRequest = {},
title = {
Text(
text = "Permission Request",
style = TextStyle(
fontSize = MaterialTheme.typography.h6.fontSize,
fontWeight = FontWeight.Bold
)
)
},
text = {
Text(rationaleMessage)
},
confirmButton = {
Button(onClick = onRequestPermission) {
Text("Give Permission")
}
}
)
} else {
Content(text = deniedMessage, onClick = onRequestPermission)
}
}
I asked for these permissions:
val PERMISSIONS_LIST = listOf(Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
on the app first run I get the permission request and I give it an access the first one is for using camera and recording videos, the second one for accessing photos and media contents.
but I'm still getting this same error again and again:
failed with exception: java.io.FileNotFoundException: app/libs/keystore/keypos.jks: open failed: ENOENT (No such file or directory)
How can fix this issue? I can't use the ssl settings because of this issue.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来可以从应用程序包中读取本地文件。
我将密钥库放在
res
目录中,并将其放在其自己的目录中。并使用上下文来获得它。就是这样。
It seems that reading a local file from the app package can be done in another way.
I placed the keystore in the
res
directory, in its own directory. and used the context to get it.This is it.