Открытие видеороликов в моем приложении

104
10

Я много искал об этом, но ничего не нашел. Моя цель - открыть все URL-адреса с видео файлом (выбранным из браузера). Обычно, если все URL-адреса заканчивались расширением файла видео IE: www.example.com/wow.mp4 я мог бы просто использовать этот Intent Filter свой манифест:

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http"/>
<data android:scheme="https"/>
<data android:mimeType="video/*">
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

Но это не везде, некоторые URL-адреса начинаются так:

http://www.videoweed.es/mobile/....17da9f11345a424f02a5

а затем перенаправить на правильную ссылку. Я хотел бы знать, как я могу перехватить эти URL-адреса для видео с помощью фильтра Intent. MXPlayer выполняет эту функцию.

спросил(а) 2014-12-02T20:46:00+03:00 5 лет, 2 месяца назад
1
Решение
49

Вам нужно вызвать модуль HTTPConnection, чтобы получить тип mime, а затем использовать тип mime для запуска активности. Вы можете обратиться к разделу ниже кода, чтобы получить URL-адрес типа mime.

Вы можете обратиться к Android-титу

import java.net.URL;
import java.net.URLConnection;

public static String getMimeType(String url)
{
String mimeType = null;

// this is to handle call from main thread
StrictMode.ThreadPolicy prviousThreadPolicy = StrictMode.getThreadPolicy();

// temporary allow network access main thread
// in order to get mime type from content-type

StrictMode.ThreadPolicy permitAllPolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(permitAllPolicy);

try
{
URLConnection connection = new URL(url).openConnection();
connection.setConnectTimeout(150);
connection.setReadTimeout(150);
mimeType = connection.getContentType();
Log.i("", "mimeType from content-type "+ mimeType);
}
catch (Exception ignored)
{
}
finally
{
// restore main thread default network access policy
StrictMode.setThreadPolicy(prviousThreadPolicy);
}

if(mimeType == null)
{
// Our B plan: guessing from from url
try
{
mimeType = URLConnection.guessContentTypeFromName(url);
}
catch (Exception ignored)
{
}
Log.i("", "mimeType guessed from url "+ mimeType);
}
return mimeType;
}

ответил(а) 2014-12-02T22:37:00+03:00 5 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема