targetSdk 26报错
时间: 2023-12-05 15:05:34 浏览: 131
error26定位指定的服务器实例时出错.docx
如果你的应用程序的targetSdkVersion设置为26或更高版本,你可能会遇到以下两个错误:
1. java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
这个错误是由于在Android 8.0(API级别26)中,只有全屏不透明的活动才能请求方向更改。如果你的应用程序中的活动不是全屏和不透明的,则需要更改代码以适应这种变化。
解决方案:在AndroidManifest.xml文件中的相应活动中添加以下属性:
```
android:windowFullscreen="true"
android:windowContentOverlay="@null"
```
2. android.os.FileUriExposedException: file:///storage/emulated/0/your_app_folder/your_file exposed beyond app through ClipData.Item.getUri()
这个错误是由于在Android 7.0(API级别24)及更高版本中,应用程序不再允许在共享URI时向外公开file:// URI。相反,你应该使用FileProvider API来共享文件。
解决方案:使用FileProvider API来共享文件。你可以在你的AndroidManifest.xml文件中定义一个FileProvider,然后使用它来共享文件。以下是一个示例:
在AndroidManifest.xml文件中添加以下代码:
```
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
```
在res/xml/文件夹中创建一个file_paths.xml文件,并添加以下代码:
```
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="external_files"
path="." />
</paths>
```
然后,你可以使用以下代码来获取共享文件的URI:
```
File file = new File(Environment.getExternalStorageDirectory(), "your_app_folder/your_file");
Uri uri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".fileprovider", file);
```
请注意,这只是解决这两个常见错误的基本解决方案。如果你仍然遇到其他问题,请查看Android文档或在Stack Overflow上寻求帮助。
阅读全文