【Android笔记】Android 9.0 SD卡读写权限问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【Android笔记】Android 9.0 SD卡读写权限问题相关的知识,希望对你有一定的参考价值。

参考技术A android 9.0 SD卡权限管理更为严格,在项目测试中遇到以下问题:

[步骤]

1.在图库中删除T卡上的图片或者视频,在文件管理中查看还存在

2.在视频应用中删除视频情况一样

[备注]重启手机后,再次进入图库重新加载进来

跟踪调试发现,是SD卡写权限被禁,用户无法对SD卡内容进行操作。

原文分析

https://blog.csdn.net/shift_wwx/article/details/85633801

修改方法:

增加-w 权限,下面第二个加上去的。

alps_p0_mp2\update\alps\system\vold\model\PublicVolume.cpp

    if (!(mFusePid = fork()))

        if (getMountFlags() & MountFlags::kPrimary)

            if (execl(kFusePath, kFusePath,

                    "-u", "1023", // AID_MEDIA_RW

                    "-g", "1023", // AID_MEDIA_RW

                    "-U", std::to_string(getMountUserId()).c_str(),

                    "-w",

                    mRawPath.c_str(),

                    stableName.c_str(),

                    NULL))

                PLOG(ERROR) << "Failed to exec";

           

        else

            if (execl(kFusePath, kFusePath,

                    "-u", "1023", // AID_MEDIA_RW

                    "-g", "1023", // AID_MEDIA_RW

                    "-U", std::to_string(getMountUserId()).c_str(),

                    "-w",//add by   for add sdcard permission 就是这样

                    mRawPath.c_str(),

                    stableName.c_str(),

                    NULL))

                PLOG(ERROR) << "Failed to exec";

           

       

这样操作之后SD卡就有了写权限,用户可以对SD卡中数据进行操作。

Android笔记:Button

示例代码摘自《第一行代码》

ButtonDemo.java的代码:

public class ButtonDemo extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.demo_button);
        
        Button button1 = (Button) findViewById(R.id.button_1);  //加载按钮
        button1.setOnClickListener(new OnClickListener() {   //注册监听事件
        @Override
        public void onClick(View v) {
        Toast.makeText(ButtonDemo.this, "You clicked Button 1",
        Toast.LENGTH_SHORT).show();          //弹出消息
        }
        });
    }
}

Layout的demo_button.xml:

 <Button 
        android:id="@+id/button_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 1" />

效果如下所示:

 

以上是关于【Android笔记】Android 9.0 SD卡读写权限问题的主要内容,如果未能解决你的问题,请参考以下文章

Android 9.0/P(android p指安卓9.0版本) okhttp3网络请求出错

Android 9.0/P(android p指安卓9.0版本) okhttp3网络请求出错

为啥 Android Studio 不会在 Android Pie (9.0) 上运行应用程序?

AdapterView 不支持 Android 8.1/9.0 removeView(View)

多进程中的 Android Pie (9.0) WebView

Android开发笔记(一百八十)使用Glide加载特殊图像