为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > android获取手机中外置内存卡、内置内存卡、手机内存路径

android获取手机中外置内存卡、内置内存卡、手机内存路径

2018-09-06 32页 doc 78KB 40阅读

用户头像

is_337177

暂无简介

举报
android获取手机中外置内存卡、内置内存卡、手机内存路径android获取手机中外置内存卡、内置内存卡、手机内存路径 Android获取手机中外置内存卡、内置内存卡、手机内存路径 获取手机中外置内存卡、内置内存卡、手机内存路径。思路是:先用 Environment.getExternalStorageDirectory()获得外部存储卡路径(某些机型也表现为内部存储 卡路径),如没有获 取到有效sd卡插入,则使用安卓的配置文件system/etc/vold.fstab读取 全部挂载信息,假如也没有可写入的sd卡,则使用 getFilesDir()方式获得当前应用所在存 储路径。...
android获取手机中外置内存卡、内置内存卡、手机内存路径
android获取手机中外置内存卡、内置内存卡、手机内存路径 Android获取手机中外置内存卡、内置内存卡、手机内存路径 获取手机中外置内存卡、内置内存卡、手机内存路径。思路是:先用 Environment.getExternalStorageDirectory()获得外部存储卡路径(某些机型也表现为内部存储 卡路径),如没有获 取到有效sd卡插入,则使用安卓的配置文件system/etc/vold.fstab读取 全部挂载信息,假如也没有可写入的sd卡,则使用 getFilesDir()方式获得当前应用所在存 储路径。为适应不同手机的内存情况,先分三种情况获得可存储路径phonePicsPath,后面 代码较长是因为有两个工具类,复制即可,代码如下: //首先判断是否有外部存储卡,如没有判断是否有内部存储卡,如没有,继续读取应用程 序所在存储 if(getExternalSdCardPath() != null){ phonePicsPath = getExternalSdCardPath(); }else{ phonePicsPath = getFilesDir().getAbsolutePath(); } /** * 遍历 system/etc/vold.fstab” 文件,获取全部的Android的挂载点信息 * * @return */ private static ArrayList String getDevMountList() { String[] toSearch = FileUtils.readFile( /system/etc/vold.fstab ).split( ArrayList String out = new ArrayList String for (int i = 0; i toSearch.length; i++) { if (toSearch[i].contains( dev_mount )) { if (new File(toSearch[i + 2]).exists()) { out.add(toSearch[i + 2]); } } } return out; } * 获取扩展SD卡存储目录 * 如果有外接的SD卡,并且已挂载,则返回这个外置SD卡目录 * 否则:返回内置SD卡目录 * @return public static String getExternalSdCardPath() { if (SDCardUtils.isMounted()) { File sdCardFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()); return sdCardFile.getAbsolutePath(); String path = null; File sdCardFile = null; ArrayList String devMountList = getDevMountList(); for (String devMount : devMountList) { File file = new File(devMount); if (file.isDirectory() file.canWrite()) { path = file.getAbsolutePath(); String timeStamp = new SimpleDateFormat( ddMMyyyy_HHmmss ).format(new Date()); File testWritable = new File(path, test_ + timeStamp); if (testWritable.mkdirs()) { testWritable.delete(); } else { path = null; if (path != null) { sdCardFile = new File(path); return sdCardFile.getAbsolutePath(); return null; } FileUtils文件: package com.zqsy.order.tools; * 文件工具类 * @author zhangda import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import android.text.TextUtils; * File Utils * ul * Read or write file * li {@link #readFile(String)} read file /li * li {@link #readFileToList(String)} read file to string list /li * li {@link #writeFile(String, String, boolean)} write file from String /li * li {@link #writeFile(String, String)} write file from String /li * li {@link #writeFile(String, List, boolean)} write file from String List /li * li {@link #writeFile(String, List)} write file from String List /li * li {@link #writeFile(String, InputStream)} write file /li * li {@link #writeFile(String, InputStream, boolean)} write file /li * li {@link #writeFile(File, InputStream)} write file /li * li {@link #writeFile(File, InputStream, boolean)} write file /li * /ul * ul * Operate file * li {@link #moveFile(File, File)} or {@link #moveFile(String, String)} /li * li {@link #copyFile(String, String)} /li * li {@link #getFileExtension(String)} /li * li {@link #getFileName(String)} /li * li {@link #getFileNameWithoutExtension(String)} /li * li {@link #getFileSize(String)} /li * li {@link #deleteFile(String)} /li * li {@link #isFileExist(String)} /li * li {@link #isFolderExist(String)} /li * li {@link #makeFolders(String)} /li * li {@link #makeDirs(String)} /li * /ul * @author a href= target= _blank Trinea /a 2012-5-12 public class FileUtils { public final static String FILE_EXTENSION_SEPARATOR = . private FileUtils() { throw new AssertionError(); * read file * @param filePath * @param charsetName The name of a supported {@link java.nio.charset.Charset /code charset code } * @return if file not exist, return null, else return content of file * @throws RuntimeException if an error occurs while operator BufferedReader public static String readFile(String filePath) { String fileContent = File file = new File(filePath); if (file == null || !file.isFile()) { return null; BufferedReader reader = null; try { InputStreamReader is = new InputStreamReader(new FileInputStream(file)); reader = new BufferedReader(is); String line = null; int i = 0; while ((line = reader.readLine()) != null) { fileContent += line + reader.close(); return fileContent; } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); return fileContent; * write file * @param filePath * @param content * @param append is append, if true, write to the end of file, else clear content of file and write into it * @return return false if content is empty, true otherwise * @throws RuntimeException if an error occurs while operator FileWriter public static boolean writeFile(String filePath, String content, boolean append) { if (StringUtils.isEmpty(content)) { return false; FileWriter fileWriter = null; try { makeDirs(filePath); fileWriter = new FileWriter(filePath, append); fileWriter.write(content); fileWriter.close(); return true; } catch (IOException e) { throw new RuntimeException( IOException occurred. , e); } finally { if (fileWriter != null) { try { fileWriter.close(); } catch (IOException e) { throw new RuntimeException( IOException occurred. , e); * write file * @param filePath * @param contentList * @param append is append, if true, write to the end of file, else clear content of file and write into it * @return return false if contentList is empty, true otherwise * @throws RuntimeException if an error occurs while operator FileWriter public static boolean writeFile(String filePath, List String contentList, boolean append) { if (contentList == null || contentList.size() == 0) { return false; FileWriter fileWriter = null; try { makeDirs(filePath); fileWriter = new FileWriter(filePath, append); int i = 0; for (String line : contentList) { if (i++ 0) { fileWriter.write( \r\n fileWriter.write(line); fileWriter.close(); return true; } catch (IOException e) { throw new RuntimeException( IOException occurred. , e); } finally { if (fileWriter != null) { try { fileWriter.close(); } catch (IOException e) { throw new RuntimeException( IOException occurred. , e); * write file, the string will be written to the begin of the file * @param filePath * @param content * @return public static boolean writeFile(String filePath, String content) { return writeFile(filePath, content, false); * write file, the string list will be written to the begin of the file * @param filePath * @param contentList * @return public static boolean writeFile(String filePath, List String contentList) { return writeFile(filePath, contentList, false); * write file, the bytes will be written to the begin of the file * @param filePath * @param stream * @return * @see {@link #writeFile(String, InputStream, boolean)} public static boolean writeFile(String filePath, InputStream stream) { return writeFile(filePath, stream, false); * write file * @param file the file to be opened for writing. * @param stream the input stream * @param append if code true /code , then bytes will be written to the end of the file rather than the beginning * @return return true * @throws RuntimeException if an error occurs while operator FileOutputStream public static boolean writeFile(String filePath, InputStream stream, boolean append) { return writeFile(filePath != null ? new File(filePath) : null, stream, append); * write file, the bytes will be written to the begin of the file * @param file * @param stream * @return * @see {@link #writeFile(File, InputStream, boolean)} public static boolean writeFile(File file, InputStream stream) { return writeFile(file, stream, false); * write file * @param file the file to be opened for writing. * @param stream the input stream * @param append if code true /code , then bytes will be written to the end of the file rather than the beginning * @return return true * @throws RuntimeException if an error occurs while operator FileOutputStream public static boolean writeFile(File file, InputStream stream, boolean append) { OutputStream o = null; try { makeDirs(file.getAbsolutePath()); o = new FileOutputStream(file, append); byte data[] = new byte[1024]; int length = -1; while ((length = stream.read(data)) != -1) { o.write(data, 0, length); o.flush(); return true; } catch (FileNotFoundException e) { throw new RuntimeException( FileNotFoundException occurred. , e); } catch (IOException e) { throw new RuntimeException( IOException occurred. , e); } finally { if (o != null) { try { o.close(); stream.close(); } catch (IOException e) { throw new RuntimeException( IOException occurred. , e); * move file * @param sourceFilePath * @param destFilePath public static void moveFile(String sourceFilePath, String destFilePath) { if (TextUtils.isEmpty(sourceFilePath) || TextUtils.isEmpty(destFilePath)) { throw new RuntimeException( Both sourceFilePath and destFilePath cannot be null. moveFile(new File(sourceFilePath), new File(destFilePath)); * move file * @param srcFile * @param destFile public static void moveFile(File srcFile, File destFile) { boolean rename = srcFile.renameTo(destFile); if (!rename) { copyFile(srcFile.getAbsolutePath(), destFile.getAbsolutePath()); deleteFile(srcFile.getAbsolutePath()); * copy file * @param sourceFilePath * @param destFilePath * @return * @throws RuntimeException if an error occurs while operator FileOutputStream public static boolean copyFile(String sourceFilePath, String destFilePath) { InputStream inputStream = null; try { inputStream = new FileInputStream(sourceFilePath); } catch (FileNotFoundException e) { throw new RuntimeException( FileNotFoundException occurred. , e); return writeFile(destFilePath, inputStream); * read file to string list, a element of list is a line * @param filePath * @param charsetName The name of a supported {@link java.nio.charset.Charset /code charset code } * @return if file not exist, return null, else return content of file * @throws RuntimeException if an error occurs while operator BufferedReader public static List String readFileToList(String filePath, String charsetName) { File file = new File(filePath); List String fileContent = new ArrayList String if (file == null || !file.isFile()) { return null; BufferedReader reader = null; try { InputStreamReader is = new InputStreamReader(new FileInputStream(file), charsetName); reader = new BufferedReader(is); String line = null; while ((line = reader.readLine()) != null) { fileContent.add(line); reader.close(); return fileContent; } catch (IOException e) { throw new RuntimeException( IOException occurred. , e); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { throw new RuntimeException( IOException occurred. , e); * get file name from path, not include suffix * pre * getFileNameWithoutExtension(null) = null * getFileNameWithoutExtension( ) = * getFileNameWithoutExtension( ) = * getFileNameWithoutExtension( abc ) = abc * getFileNameWithoutExtension( a.mp3 ) = a * getFileNameWithoutExtension( a.b.rmvb ) = a.b * getFileNameWithoutExtension( c:\\ ) = * getFileNameWithoutExtension( c:\\a ) = a * getFileNameWithoutExtension( c:\\a.b ) = a * getFileNameWithoutExtension( c:a.txt\\a ) = a * getFileNameWithoutExtension( /home/admin ) = admin * getFileNameWithoutExtension( /home/admin/a.txt/b.mp3 ) = b * /pre * @param filePath * @return file name from path, not include suffix * @see public static String getFileNameWithoutExtension(String filePath) { if (StringUtils.isEmpty(filePath)) { return filePath; int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR); int filePosi = filePath.lastIndexOf(File.separator); if (filePosi == -1) { return (extenPosi == -1 ? filePath : filePath.substring(0, extenPosi)); if (extenPosi == -1) { return filePath.substring(filePosi + 1); return (filePosi extenPosi ? filePath.substring(filePosi + 1, extenPosi) : filePath.substring(filePosi + 1)); * get file name from path, include suffix * pre * getFileName(null) = null * getFileName( ) = * getFileName( ) = * getFileName( a.mp3 ) = a.mp3 * getFileName( a.b.rmvb ) = a.b.rmvb * getFileName( abc ) = abc * getFileName( c:\\ ) = * getFileName( c:\\a ) = a * getFileName( c:\\a.b ) = a.b * getFileName( c:a.txt\\a ) = a * getFileName( /home/admin ) = admin * getFileName( /home/admin/a.txt/b.mp3 ) = b.mp3 * /pre * @param filePath * @return file name from path, include suffix public static String getFileName(String filePath) { if (StringUtils.isEmpty(filePath)) { return filePath; int filePosi = filePath.lastIndexOf(File.separator); return (filePosi == -1) ? filePath : filePath.substring(filePosi + 1); * get folder name from path * pre * getFolderName(null) = null * getFolderName( ) = * getFolderName( ) = * getFolderName( a.mp3 ) = * getFolderName( a.b.rmvb ) = * getFolderName( abc ) = * getFolderName( c:\\ ) = c: * getFolderName( c:\\a ) = c: * getFolderName( c:\\a.b ) = c: * getFolderName( c:a.txt\\a ) = c:a.txt * getFolderName( c:a\\b\\c\\d.txt ) = c:a\\b\\c * getFolderName( /home/admin ) = /home * getFolderName( /home/admin/a.txt/b.mp3 ) = /home/admin/a.txt * /pre * @param filePath * @return public static String getFolderName(String filePath) { if (StringUtils.isEmpty(filePath)) { return filePath; int filePosi = filePath.lastIndexOf(File.separator); return (filePosi == -1) ? : filePath.substring(0, filePosi); * get suffix of file from path * pre * getFileExtension(null) = * getFileExtension( ) = * getFileExtension( ) = * getFileExtension( a.mp3 ) = mp3 * getFileExtension( a.b.rmvb ) = rmvb * getFileExtension( abc ) = * getFileExtension( c:\\ ) = * getFileExtension( c:\\a ) = * getFileExtension( c:\\a.b ) = b * getFileExtension( c:a.txt\\a ) = * getFileExtension( /home/admin ) = * getFileExtension( /home/admin/a.txt/b ) = * getFileExtension( /home/admin/a.txt/b.mp3 ) = mp3 * /pre * @param filePath * @return public static String getFileExtension(String filePath) { if (StringUtils.isBlank(filePath)) { return filePath; int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR); int filePosi = filePath.lastIndexOf(File.separator); if (extenPosi == -1) { return return (filePosi = extenPosi) ? : filePath.substring(extenPosi + 1); * Creates the directory named by the trailing filename of this file, including the complete directory path required * to create this directory. br/ * br/ * ul * strong Attentions: /strong * li makeDirs( C:\\Users\\Trinea ) can only create users folder /li * li makeFolder( C:\\Users\\Trinea\\ ) can create Trinea folder /li * /ul * @param filePath * @return true if the necessary directories have been created or the target directory already exists, false one of * the directories can not be created. * ul * li if {@link FileUtils#getFolderName(String)} return null, return false /li * li if target directory already exists, return true /li * li return {@link java.io.File#makeFolder} /li * /ul public static boolean makeDirs(String filePath) { String folderName = getFolderName(filePath); if (StringUtils.isEmpty(folderName)) { return false; File folder = new File(folderName); return (folder.exists() folder.isDirectory()) ? true : folder.mkdirs(); * @param filePath * @return * @see #makeDirs(String) public static boolean makeFolders(String filePath) { return makeDirs(filePath); * Indicates if this file represents a file on the underlying file system. * @param filePath * @return public static boolean isFileExist(String filePath) { if (StringUtils.isBlank(filePath)) { return false; File file = new File(filePath); return (file.exists() file.isFile()); * Indicates if this file represents a directory on the underlying file system. * @param directoryPath * @return public static boolean isFolderExist(String directoryPath) { if (StringUtils.isBlank(directoryPath)) { return false; File dire = new File(directoryPath); return (dire.exists() dire.isDirectory()); * delete file or directory * ul * li if path is null or empty, return true /li * li if path not exist, return true /li * li if path exist, delete recursion. return true /li * ul * @param path * @return public static boolean deleteFile(String path) { if (StringUtils.isBlank(path)) { return true; File file = new File(path); if (!file.exists()) { return true; if (file.isFile()) { return file.delete(); if (!file.isDirectory()) { return false; for (File f : file.listFiles()) { if (f.isFile()) { f.delete(); } else if (f.isDirectory()) { deleteFile(f.getAbsolutePath()); return file.delete(); * get file size * ul * li if path is null or empty, return -1 /li * li if path exist and it is a file, return file size, else return -1 /li * ul * @param path * @return returns the length of this file in bytes. returns -1 if the file does not exist. public static long getFileSize(String path) { if (StringUtils.isBlank(path)) { return -1; File file = new File(path); return (file.exists() file.isFile() ? file.length() : -1); } StringUtils文件 package com.zqsy.order.tools; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.regex.Matcher; import java.util.regex.Pattern; * String Utils * @author a href= target= _blank Trinea /a 2011-7-22 public class StringUtils { private StringUtils() { throw new AssertionError(); * is null or its length is 0 or it is made by space * pre * isBlank(null) = true; * isBlank( quot; quot;) = true; * isBlank( quot; quot;) = true; * isBlank( quot;a quot;) = false; * isBlank( quot;a quot;) = false; * isBlank( quot; a quot;) = false; * isBlank( quot;a b quot;) = false; * /pre * @param str * @return if string is null or its size is 0 or it is made by space, return true, else return false. public static boolean isBlank(String str) { return (str == null || str.trim().length() == 0); * is null or its length is 0 * pre * isEmpty(null) = true; * isEmpty( quot; quot;) = true; * isEmpty( quot; quot;) = false; * /pre * @param str * @return if string is null or its size is 0, return true, else return false. public static boolean isEmpty(CharSequence str) { return (str == null || str.length() == 0); * compare two string * @param actual * @param expected * @return * @see ObjectUtils#isEquals(Object, Object) public static boolean isEquals(String actual, String expected) { return actual == expected || (actual == null ? expected == null : actual.equals(expected)); * get length of CharSequence * pre * length(null) = 0; * length(\ \ ) = 0; * length(\ abc\ ) = 3; * /pre * @param str * @return if str is null or empty, return 0, else return {@link CharSequence#length()}. public static int length(CharSequence str) { return str == null ? 0 : str.length(); * null Object to empty string * pre * nullStrToEmpty(null) = quot; quot;; * nullStrToEmpty( quot; quot;) = quot; quot;; * nullStrToEmpty( quot;aa quot;) = quot;aa quot;; * /pre * @param str * @return public static String nullStrToEmpty(Object str) { return (str == null ? : (str instanceof String ? (String)str : str.toString())); * capitalize first letter * pre * capitalizeFirstLetter(null) = null; * capitalizeFirstLetter( ) = * capitalizeFirstLetter( 2ab ) = 2ab * capitalizeFirstLetter( a ) = A * capitalizeFirstLetter( ab ) = Ab * capitalizeFirstLetter( Abc ) = Abc * /pre * @param str * @return public static String capitalizeFirstLetter(String str) { if (isEmpty(str)) { return str; char c = str.charAt(0); return (!Character.isLetter(c) || Character.isUpperCase(c)) ? str : new StringBuilder(str.length()) .append(Character.toUpperCase(c)).append(str.substring(1)).toString(); * encoded in utf-8 * pre * utf8Encode(null) = null * utf8Encode( ) = * utf8Encode( aa ) = aa * utf8Encode( 啊啊啊啊 ) = %E5%95%8A%E5%95%8A%E5%95%8A%E5%95%8A * /pre * @param str * @return * @throws UnsupportedEncodingException if an error occurs public static String utf8Encode(String str) { if (!isEmpty(str) str.getBytes().length != str.length()) { try { return URLEncoder.encode(str, UTF-8 } catch (UnsupportedEncodingException e) { throw new RuntimeException( UnsupportedEncodingException occurred. , e); return str; * encoded in utf-8, if exception, return defultReturn * @param str * @param defultReturn * @return public static String utf8Encode(String str, String defultReturn) { if (!isEmpty(str) str.getBytes().length != str.length()) { try { return URLEncoder.encode(str, UTF-8 } catch (UnsupportedEncodingException e) { return defultReturn; return str; * get innerHtml from href * pre * getHrefInnerHtml(null) = * getHrefInnerHtml( ) = * getHrefInnerHtml( mp3 ) = mp3 * getHrefInnerHtml( a innerHtml /a ) = a innerHtml /a * getHrefInnerHtml( a innerHtml /a ) = innerHtml * getHrefInnerHtml( a a innerHtml /a ) = innerHtml * getHrefInnerHtml( a href= baidu.com innerHtml /a ) = innerHtml * getHrefInnerHtml( a href= baidu.com title= baidu innerHtml /a ) = innerHtml * getHrefInnerHtml( a innerHtml /a ) = innerHtml * getHrefInnerHtml( a innerHtml /a /a ) = innerHtml * getHrefInnerHtml( jack a innerHtml /a /a ) = innerHtml * getHrefInnerHtml( a innerHtml1 /a a innerHtml2 /a ) = innerHtml2 * /pre * @param href * @return ul * li if href is null, return /li * li if not match regx, return source /li * li return the last string that match regx /li * /ul public static String getHrefInnerHtml(String href) { if (isEmpty(href)) { return String hrefReg = .* [\\s]*a[\\s]*.* (.+?) [\\s]*/a[\\s]* .* Pattern hrefPattern = Pattern.compile(hrefReg, Pattern.CASE_INSENSITIVE); Matcher hrefMatcher = hrefPattern.matcher(href); if (hrefMatcher.matches()) { return hrefMatcher.group(1); return href; * process special char in html * pre * htmlEscapeCharsToString(null) = null; * htmlEscapeCharsToString( ) = * htmlEscapeCharsToString( mp3 ) = mp3 * htmlEscapeCharsToString( mp3 ) = mp3 * htmlEscapeCharsToString( mp3 ) = mp3\ * htmlEscapeCharsToString( mp3 amp;mp4 ) = mp3 mp4 * htmlEscapeCharsToString( mp3 quot;mp4 ) = mp3\ mp4 * htmlEscapeCharsToString( mp3 amp; quot;mp4 ) = mp3\ \ \ mp4 * /pre * @param source * @return public static String htmlEscapeCharsToString(String source) { return StringUtils.isEmpty(source) ? source : source.replaceAll( , ).replaceAll( , ) .replaceAll( amp; , ).replaceAll( quot; , \ * transform half width char to full width char * pre * fullWidthToHalfWidth(null) = null; * fullWidthToHalfWidth( ) = * fullWidthToHalfWidth(new String(new char[] {12288})) = * fullWidthToHalfWidth( ~:,,,,) = !\ #$% * /pre * @param s * @return public static String fullWidthToHalfWidth(String s) { if (isEmpty(s)) { return s; char[] source = s.toCharArray(); for (int i = 0; i source.length; i++) { if (source[i] == 12288) { source[i] = ‘ ‘; // } else if (source[i] == 12290) { // source[i] = ‘.’; } else if (source[i] = 65281 source[i] = 65374) { source[i] = (char)(source[i] - 65248); } else { source[i] = source[i]; return new String(source); * transform full width char to half width char * pre * halfWidthToFullWidth(null) = null; * halfWidthToFullWidth( ) = * halfWidthToFullWidth( ) = new String(new char[] {12288}); * halfWidthToFullWidth( !\ #$% ) = ~:,,,, * /pre * @param s * @return public static String halfWidthToFullWidth(String s) { if (isEmpty(s)) { return s; char[] source = s.toCharArray(); for (int i = 0; i source.length; i++) { if (source[i] == ‘ ‘) { source[i] = (char)12288; // } else if (source[i] == ‘.’) { // source[i] = (char)12290; } else if (source[i] = 33 source[i] = 126) { source[i] = (char)(source[i] + 65248); } else { source[i] = source[i]; return new String(source); }
/
本文档为【android获取手机中外置内存卡、内置内存卡、手机内存路径】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索