c# - 拒绝访问路径“/data/user/0/com.companyname.hidden_wiretapping/files”。
问题描述
下午好,请帮我弄清楚,我想将我的录音保存到外部存储,我授予了对 android.manifest 的访问权限,并且还请求用户许可(CheckPermisissions),但我无法访问录音
这是我的宣言
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.hidden_wiretapping" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="30" />
<application android:label="Hidden_Wiretapping.Android" android:theme="@style/MainTheme"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
</manifest>
这是我试图将录音保存到文件夹的代码
private async void Start_Clicked(object sender, EventArgs e)
{
if (!audioRecorderService.IsRecording)
{
var mainDir = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var PermissionsStrorage = await Permissions.CheckStatusAsync<Permissions.StorageWrite>();
var PermissionsMicrophone = await Permissions.CheckStatusAsync<Permissions.Microphone>();
if (PermissionsStrorage != PermissionStatus.Granted && PermissionsMicrophone != PermissionStatus.Granted)
{
PermissionsStrorage = await Permissions.RequestAsync<Permissions.StorageWrite>();
PermissionsMicrophone = await Permissions.RequestAsync<Permissions.Microphone>();
}
if (PermissionsStrorage != PermissionStatus.Granted && PermissionsMicrophone != PermissionStatus.Granted)
{
return;
}
var file = Path.Combine(mainDir, "count.txt");
File.Create(file);
audioRecorderService.TotalAudioTimeout = TimeSpan.FromSeconds(3);
audioRecorderService.FilePath = mainDir;
await audioRecorderService.StartRecording();
Start.TextColor = Color.Blue;
}
else
{
await audioRecorderService.StopRecording();
Start.TextColor = Color.Red;
}
}
我添加了 logcat
java.io.FileNotFoundException: /data/user/0/com.google.android.apps.messaging/files/rcsconfig (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:231)
at java.io.FileInputStream.<init>(FileInputStream.java:165)
at android.app.ContextImpl.openFileInput(ContextImpl.java:560)
at android.content.ContextWrapper.openFileInput(ContextWrapper.java:202)
at ion.a(SourceFile:2)
at idl.a(SourceFile:4)
at idm.a(SourceFile:7)
at com.google.android.apps.messaging.rcsmigration.RcsStateProvider.buildRcsState(SourceFile:81)
at com.google.android.apps.messaging.rcsmigration.RcsStateProvider.getRcsState(SourceFile:6)
at com.google.android.ims.rcsmigration.IRcsStateProvider$Stub.dispatchTransaction(SourceFile:10)
at com.google.android.aidl.BaseStub.onTransact(SourceFile:18)
at android.os.Binder.execTransact(Binder.java:731)
解决方案
推荐阅读
- reactjs - 如何在 reactjs 中使用 chart.js 显示动态多线图
- css - 防止模态在移动设备上上下移动?
- c# - 我需要创建一个新的 ETL C# 进程,其中包含大型 .CSV 文件到 SQL 表添加/更新记录
- asp.net - 如何更改 Asp.Net Core 3.1 web.config 文件中的默认信任设置?
- visual-studio-code - 为什么这个 rdkit 脚本在 Visual Studio 代码中不起作用?
- dataframe - 数据框 API 与 Spark.sql
- c++ - 如何重载这些运算符以使该程序正常工作?
- vue.js - 现有应用程序中的 Vue Material 组件
- java - 如何在 Android Java 中定义多重继承
- c++ - 将整数转换为 _LARGE_INTEGERS