zoukankan      html  css  js  c++  java
  • android 读写文件、列出根目录文件及新版本权限

    想列出android 内部存储根目录(内部存储也是sd卡形式)

                File path = Environment.getExternalStorageDirectory();
    
                File[] files=path.listFiles();
                for(int i=0;i<files.length;i++){
                    str1 += files[i].getAbsolutePath()+",";
                }
                textView.setText("bb"+str1);

    发现老是提示报错 ,debug 发现eacces,是权限问题

    1、先在AndroidManifest.xml 里

    </application>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    还加了
    <application
    android:allowBackup="true"
    android:requestLegacyExternalStorage="true"

    发现还没有用,即使在手机权限里加上还不行

    2、加上下面代码好了,新版本需要用下面的方式

     private  final int REQUEST_EXTERNAL_STORAGE = 1;
        private  String[] PERMISSIONS_STORAGE = {
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE };
        public  void verifyStoragePermissions(Activity activity) {
            // Check if we have write permission
            int permission = ActivityCompat.checkSelfPermission(activity,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE);
            if (permission != PackageManager.PERMISSION_GRANTED) {
                // We don't have permission so prompt the user
                ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
                        REQUEST_EXTERNAL_STORAGE);
            }
        }

    然后在

    onCreate 里调用
    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    verifyStoragePermissions(this);

    3、后面处理读写文件也ok了

    try {
                    File urlFile = new File(str3+"/sd/test.txt");
                    Log.e("-----------","111");
                    InputStreamReader isr = new InputStreamReader(new FileInputStream(urlFile), "UTF-8");
                    BufferedReader br = new BufferedReader(isr);
                    Log.e("-----------","112221");
                    String str = "";
                    String mimeTypeLine = null ;
                    while ((mimeTypeLine = br.readLine()) != null) {
                        str = str+mimeTypeLine;
                    }
                    Log.e("-----------",str);
                    textView.setText(str);
                } catch (Exception e) {
                    e.printStackTrace();
                }

     4 一个显示目录的 Activity

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            verifyStoragePermissions(this);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            TextView textView = this.findViewById(R.id.tv1);
    
            //String str =getApplicationContext().getFilesDir().getAbsolutePath();
    
            String str1 = Environment.getExternalStorageDirectory().getAbsolutePath();
    
            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
    
                File path = Environment.getExternalStorageDirectory();
    
                File[] files=path.listFiles();
                for(int i=0;i<files.length;i++){
                    str1 += files[i].getAbsolutePath()+",";
                }
                textView.setText("bb"+str1);
            }
    
        }
        private  final int REQUEST_EXTERNAL_STORAGE = 1;
        private  String[] PERMISSIONS_STORAGE = {
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE };
        public  void verifyStoragePermissions(Activity activity) {
            // Check if we have write permission
            int permission = ActivityCompat.checkSelfPermission(activity,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE);
            if (permission != PackageManager.PERMISSION_GRANTED) {
                // We don't have permission so prompt the user
                ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
                        REQUEST_EXTERNAL_STORAGE);
            }
        }
    
    }
  • 相关阅读:
    (一)SpringCloud Alibaba Nacos服务注册和配置中心:Nacos简介
    (八)SpringCloud初级篇——Eureka服务注册与发现:服务发现Discovery
    (七)SpringCloud初级篇——Eureka服务注册与发现:actuator微服务信息完善
    (六)SpringCloud初级篇——Eureka服务注册与发现:集群Eureka构建步骤
    Windows系统修改Hosts文件
    (五)SpringCloud初级篇——Eureka服务注册与发现:单机Eureka构建步骤
    centos7 安装zookeeper
    热部署Devtools
    【阅读笔记】《C程序员 从校园到职场》第三章 程序的样式(版式和注释)
    【阅读笔记】《C程序员 从校园到职场》第二章 学校到职场
  • 原文地址:https://www.cnblogs.com/cnchengv/p/14664560.html
Copyright © 2011-2022 走看看