Как расширить класс URL для поддержки других протоколов в java (android)?

Я хочу, чтобы url закодировал строку, которая имеет неподдерживаемый url-протокол (схему). Итак, на третьей строке будет выбрано исключение. Есть ли способ создать поддержку класса URL «mmsh» или любую другую схему «custom_name»?

EDIT: я не хочу регистрировать некоторые протоколы для моего приложения. Я просто хочу иметь возможность использовать класс URL без исключения «неподдерживаемого протокола». Я использую класс URL только для синтаксического анализа и упорядочения строки url.

String string="mmsh://myserver.com/abc"; String decodedURL = URLDecoder.decode(string, "UTF-8"); URL url = new URL(decodedURL); URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef()); 

    Я создал примерную программу на основе кода, представленного на URL to load resources from the classpath in Java и Custom URL protocols and multiple classloaders и, похоже, он работает нормально.

     @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); URL url; try { url = new URL(null, "user:text.xml", new Handler()); InputStream ins = url.openStream(); ins.read(); Log.d("CustomURL", "Created and accessed it using custom handler "); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static class Handler extends URLStreamHandler { @Override protected URLConnection openConnection(URL url) throws IOException { return new UserURLConnection(url); } public Handler() { } private static class UserURLConnection extends URLConnection { private String fileName; public UserURLConnection(URL url) { super(url); fileName = url.getPath(); } @Override public void connect() throws IOException { } @Override public InputStream getInputStream() throws IOException { File absolutePath = new File("/data/local/", fileName); return new FileInputStream(absolutePath); } } }