android targetSdkVersion 改成28以后出的问题

博客介绍了Android开发中的两个问题及解决方法。一是找不到网络问题,需在res/xml新建network_security_config.xml文件,并在androidManifest.xml的application中添加相关内容;二是添加拍照功能,要在res/xml建立provider_paths.xml,在manifests的application添加内容,同时注意fileprovider名字固定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 找不到网络
在res/xml 新建立
network_security_config.xml文件
内容

<?xml version ="1.0" encoding ="utf-8"?><!--  Learn More about how to use App Actions: https://developer.android.com/guide/actions/index.html -->
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

在androidManifest.xml application 添加
android:networkSecurityConfig="@xml/network_security_config"

在application下边添加

 <meta-data
            android:name="com.google.android.actions"
            android:resource="@xml/network_security_config" />

========================================================
问题

Failed resolution of: Lorg/apache/http/ProtocolVersion;

解决
在application下边添加

 <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />

=======================

3 添加拍照
在res/xml/ 建立provider_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <paths>
        <external-path
            name="camera_photos"
            path="" />
    </paths>
</resources>

在manifests application 添加

 <!-- FileProvider配置访问路径,适配7.0及其以上 -->
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="包名.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>

打开相机

   public static void getByCamera(Activity act, String path, int requestCode) {
        String state = Environment.getExternalStorageState();
        if (state.equals(Environment.MEDIA_MOUNTED)) {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            Uri uri = getUri(act, new File(path));
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
            takePictureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
            //Android7.0添加临时权限标记,此步千万别忘了
            takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            act.startActivityForResult(takePictureIntent, requestCode);

        }  
    }

public static Uri getUri(Context context, File file) {
        Uri fileUri;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            fileUri =  FileProvider.getUriForFile(context.getApplicationContext(),  "包名.fileprovider",file);
        } else {
            fileUri = Uri.fromFile(file);
        }

        return fileUri;
    }

注意:fileprovider 这个名字是固定的 如果manifests,getUri 不一致会报错的。

Android Studio中更改SDK版本的操作主要包括修改项目的编译Sdk版本(compileSdkVersion)、最小Sdk版本(minSdkVersion)以及目标Sdk版本(targetSdkVersion)。下面详细介绍如何进行这一操作: ### 修改步骤 1. **打开build.gradle文件** 找到你想要修改的Module对应的`build.gradle`文件,通常是app Module下的那个。这是配置项目构建细节的核心文件之一。 2. **调整Compile Sdk Version** - 寻找 `android { ... }`块内的`compileSdkVersion`一行。 - 将它设置为你希望的新版次号。例如如果你想改成API Level 30,就写成: ```gradle compileSdkVersion 30 ``` 3. **设定Min Sdk Version** - 同样定位至上述提到的大括弧内搜索`defaultConfig{...}`部分里的`minSdkVersion`项。 - 这里决定了你的应用最低支持哪个安卓系统版本。假设要兼容到5.x(API level 23),则应改为: ```gradle minSdkVersion 23 ``` 4. **指定Target Sdk Version** - 继续在同一区域找到或者添加上`targetSdkVersion`这行代码片段。 - 推荐将其也同步设为最新的稳定发行版本编号比如也是30的话表达式即为: ```gradle targetSdkVersion 30 ``` 5. **保存变更后点击Sync Now按钮** 完成了以上编辑动作之后,IDE右上方应该会有提示让你立即与Gradle仓库做一次数据交换以反映改动结果。请点击“sync now”让新的设置生效。 6. **验证是否成功切换了环境变量所指代的具体JDK路径** 如果涉及到更深层次的Java Development Kit(JDK)关联变动还需进入File->Project Structure菜单检查Global Libraries选项卡下实际链接地址无误后再试运行一下工程项目看能否正常启动起来判断最终成果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙之吻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值