Тем не менее, если у вас возникла проблема с получением реального пути, вы можете попробовать мои ответы. Приведенные выше ответы не помогли мне.
Объяснение : - Этот метод получает URI, а затем проверяет уровень API вашего устройства Android, после чего в соответствии с уровнем API генерируется реальный путь. Код для генерации метода реального пути различается в зависимости от уровня API.
метод для получения реального пути из URI
@SuppressLint("ObsoleteSdkInt")
public String getPathFromURI(Uri uri){
String realPath="";
// SDK < API11
if (Build.VERSION.SDK_INT < 11) {
String[] proj = { MediaStore.Images.Media.DATA };
@SuppressLint("Recycle") Cursor cursor = getContentResolver().query(uri, proj, null, null, null);
int column_index = 0;
String result="";
if (cursor != null) {
column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
realPath=cursor.getString(column_index);
}
}
// SDK >= 11 && SDK < 19
else if (Build.VERSION.SDK_INT < 19){
String[] proj = { MediaStore.Images.Media.DATA };
CursorLoader cursorLoader = new CursorLoader(this, uri, proj, null, null, null);
Cursor cursor = cursorLoader.loadInBackground();
if(cursor != null){
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
realPath = cursor.getString(column_index);
}
}
// SDK > 19 (Android 4.4)
else{
String wholeID = DocumentsContract.getDocumentId(uri);
// Split at colon, use second item in the array
String id = wholeID.split(":")[1];
String[] column = { MediaStore.Images.Media.DATA };
// where id is equal to
String sel = MediaStore.Images.Media._ID + "=?";
Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column, sel, new String[]{ id }, null);
int columnIndex = 0;
if (cursor != null) {
columnIndex = cursor.getColumnIndex(column[0]);
if (cursor.moveToFirst()) {
realPath = cursor.getString(columnIndex);
}
cursor.close();
}
}
return realPath;
}
Используйте этот метод следующим образом
Log.e(TAG, "getRealPathFromURI: "+getPathFromURI(your_selected_uri) );
Вывод: -
04-06 12: 39: 46.993 6138-6138 / com.app.qtm E / tag: getRealPathFromURI: / storage / emulated / 0 / Видео / avengers_infinity_war_4k_8k-7680x4320.jpg
Предполагается, что код является допустимым HTML (без случайных операторов <или>)
$htmlCode =~ s|<.+?>||g;
Если вам нужно удалить только жирные, h1 и br
$htmlCode =~ s#</?(?:b|h1|br)\b.*?>##g
И вы можете рассмотреть HTML :: Strip модуль
Из perlfaq9: Как удалить HTML из строки?
Самый правильный способ (хотя и не самый быстрый) - использовать HTML: : Парсер из CPAN. Другой наиболее правильный способ - использовать HTML :: FormatText, который не только удаляет HTML, но и пытается сделать небольшое простое форматирование результирующего простого текста.
Многие пытаются использовать простой подход с использованием регулярных выражений, например s /<.*?>// g, но во многих случаях это терпит неудачу, потому что теги могут продолжаться поверх разрывов строк, они могут содержать угловые скобки в кавычках или HTML-комментарий может присутствовать. Кроме того, люди забывают преобразовывать сущности - например, <.
Вот один «простой» подход, который работает для большинства файлов:
#!/usr/bin/perl -p0777
s/<(?:[^>'"]*|(['"]).*?\1)*>//gs
Если вам нужно более полное решение, см. 3-этапную программу striphtml в http://www.cpan.org/authors/id/T/TO/TOMC/scripts/striphtml.gz .
Вот несколько сложных случаев, о которых вам следует подумать при выборе решения :
<IMG SRC = "foo.gif" ALT = "A > B">
<IMG SRC = "foo.gif"
ALT = "A > B">
<!-- <A comment> -->
<script>if (a<b && a>c)</script>
<# Just data #>
<![INCLUDE CDATA [ >>>>>>>>>>>> ]]>
Если HTML-комментарии включают другие теги, эти решения также будут разбиты на текст, например:
<!-- This section commented out.
<B>You can't see me!</B>
-->