Ответ 1
Да, это возможно.
Используйте метод WebViewClient
shouldOverrideUrlLoading
, чтобы перехватить любые ссылки, содержащие определенное значение. Скажем, вы создаете такую ссылку:
<a href="#addtocalendar"> April 7th, 2015 - Add to Calendar</a>
Теперь мы будем использовать shouldOverrideUrlLoading
для перехвата крана и добавления события в календарь, т.е.:
mWebView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView wView, String url)
{
if (url.contains("addtocalendar") ) {
Calendar cal = Calendar.getInstance();
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("allDay", false);
intent.putExtra("rrule", "FREQ=YEARLY"); //optional recurring event
intent.putExtra("beginTime", cal.getTimeInMillis());
intent.putExtra("endTime", cal.getTimeInMillis()+3600000); // adds 1 hour
intent.putExtra("title", "Event on April 7th, 2015");
startActivity(intent);
return true;
}
}
});
Добавьте следующие разрешения для AndroidManifest.xml
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
shouldOverrideUrlLoading
boolean shouldOverrideUrlLoading(WebView view, String url)
Дайте хост-приложению возможность взять на себя управление, когда новый url будет загружен в текущий WebView.
http://developer.android.com/reference/android/webkit/WebViewClient.html
Провайдер календаря для Android
http://developer.android.com/guide/topics/providers/calendar-provider.html