zoukankan      html  css  js  c++  java
  • 权限

     

    1.         在android4.0源码出来以后,关于sd卡问题似乎没有解决好,起码上层api中没有体现到位。其实在framework层中有相应的类去获得内外置sd卡信息,是否可读写的权限。  

            在2.x的版本中,在manifest中配置的权限android.permission.WRITE_EXTERNAL_STORAGE确实是用来使得sd卡获得写的权限。而在4.0开发的源码当中,由于有了内外置sd卡的区分,

    android.permission.WRITE_EXTERNAL_STORAGE 的权限用来设置了内置sd卡的写权限,如果在manifest中只是配置了这个权限,那个应用只能在内置sd卡中进行写操作,

    还是无法在外置sd卡中进行 写操作。需要写外置sd卡的话,需要配置另一个权限android.permission.WRITE_MEDIA_STORAGE,这样就可以在外置 sd卡中进行写入操作了。

    这两个权限都被定义在 android源码目录frameworksasedataetcplatform.xml中:

     

    1. <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >  
    2.     <group gid="sdcard_rw" />  
    3. </permission>  
    4.   
    5. <permission name="android.permission.WRITE_MEDIA_STORAGE" >  
    6.     <group gid="media_rw" />  
    7. </permission>  


    使用到的类主要是framework/base/core/java/android/os/storage/StorageVolume.java及相同目录下的StorageManager.java文件。

    StorageManager类可以获得所有的存储媒体列表,及StorageVolume类型的数组,从而可以获得对应存储是否可读写一类的信息。

     

     

     

    对应Android 1.5以上的版本中一定要在AndroidManifest.xml中加入:

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

    其次:确保SD卡的镜像文件不是Read-Only属性的,不能写入内容

    写入SD卡:
    File f = new File(android.os.Environment.getExternalStorageDirectory()+"/aaa.txt"); 
    String str="this is a test about Write SD card file";

    方法A:
    FileOutputStream fileOS=new FileOutputStream(f);
    fileOS.write(str.getBytes());
    fileOS.close();
    BufferedWriter buf = new BufferedWriter (new OutputStreamWriter(fileOS));
    buf.write(str,0,str.length());
    buf.flush();
    buf.close();
    方法B:

    //         FileWriter fw = new FileWriter("/sdcard/cc.txt"); 
    //            fw.write(str); 
    //            fw.close();

    读SD卡
    File file[] = android.os.Environment.getExternalStorageDirectory().listFiles();   
             //这里我们只是取得列表中的第二个文件的绝对路径
             String path=file[1].getAbsolutePath(); 
    try{ 
              
                FileInputStream fileIS = new FileInputStream(path); 
               BufferedReader buf = new BufferedReader(new InputStreamReader(fileIS)); 
                String readString = new String(); 
                //just reading each line and pass it on the debugger 
               while((readString = buf.readLine())!= null){ 
                    Log.d("line: ", readString); 
                 } 
                fileIS.close();
              } catch (FileNotFoundException e) { 
                 e.printStackTrace(); 
               } catch (IOException e){ 
                e.printStackTrace(); 
              }

    删除SD卡中的文件

    File file1= new File(path);
    boolean isdelte=file1.delete();

     

    添加WiFi以及访问网络的权限:
      <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" ></uses-permission>
      <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission>
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission>
      <uses-permission android:name="android.permission.INTERNET" ></uses-permission>
      <uses-permission android:name="android.permission.WAKE_LOCK" ></uses-permission>


    操作外部存储设备文件:
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


    录音时需要的权限:
    <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>


    录制视频时需要的权限:
    <uses-permission android:name="android.permission.CAMERA"></uses-permission>
    <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>


    发送短信:
    <uses-permission android:name="android.permission.SEND_SMS" ></uses-permission>


    收短信:
    <uses-permission android:name="android.permission.RECEIVE_SMS" />


    收彩信:
    <uses-permission android:name="android.permission.READ_SMS" />


    GPS:
    <!-- 联网 -->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <!-- GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!--  AGPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

     

  • 相关阅读:
    为蓝桥杯准备
    Java里子类调用父类构造方法问题
    boost库的Singleton的实现以及static成员的初始化问题
    VS2005调试小记
    <转载>程序员每天该做的事
    vs2005, 2008 使用了未初始化的msg变量
    转载 vs2005 快捷键大全
    VS2005右键点击转到定义后出现“未定义符号”的提示及其解决
    软件工程配置规范(VC2005) 第二版(转载)
    匆忙赶路的时候别忘了适时停下来回头看看
  • 原文地址:https://www.cnblogs.com/pppp2/p/6248481.html
Copyright © 2011-2022 走看看