此应用程序中的WebView打开一个带有上传按钮的页面.

下面是允许打开对话框以从库或相机上传图像的代码块.
在我的活动中我有:
private WebView wv;
//make HTML upload button work in Webview
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE=1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if(requestCode==FILECHOOSER_RESULTCODE)
{
if (null == mUploadMessage) return;
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}
Run Code Online (Sandbox Code Playgroud)
在onCreate中我有以下内容:
wv.setWebChromeClient(new WebChromeClient() {
private Uri imageUri;
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType ) {
File imageStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyApp");
// …Run Code Online (Sandbox Code Playgroud) android android-intent android-image android-webview android-camera
所以我是Android应用程序写作的新手,我正在尝试一个练习应用程序,我希望以后可以变成一些东西.在我决定尝试将webview添加到其中一个之前,我在操作栏中有3个选项卡运行正常.现在它崩溃了IllegalStateException.由于我目前对android不太了解,我似乎无法弄清楚出了什么问题.
主要活动:
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
private String[] tabs = { "Web", "Facebook", "Twitter" };
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialization
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs)
{
actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this));
}
/**
* on swiping the viewpager make respective tab selected
* */
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
// on changing …Run Code Online (Sandbox Code Playgroud) java android android-webview illegalstateexception android-fragments
这实际上是一个两部分问题.首先,是否可以检测Android设备上是否安装了Flash?其次,如果已安装,是否可以在活动中显示Flash视频?我认为您必须在Activity中使用WebView小部件来显示Flash内容,而不是像VideoView这样的内容.Flash甚至在WebView小部件中是否受支持,或者仅由实际的浏览器应用程序支持?
我正在开发一个名为Lightning Browser的开源浏览器,我在Android(4.2.2)的最新更新中遇到了一些麻烦.
在触摸视图之前,WebView将无法完全呈现.它只发生在最新的Android版本上.在4.2.1上,WebView呈现完全正常.我使用Nexus 7进行开发,在收到4.2.2更新后,浏览器停止渲染.其他用户也经历过这种情况,并且仅在4.2.2上多次确认.它正在针对API级别16和17进行,但我看到了一个针对API级别9的WebKit浏览器,没有出现此问题.
我试图使用我在Stack Overflow上找到的问题的解决方案来解决这个问题(Android WebView呈现空白/白色,视图不会更新css更改或HTML更改,动画不稳定).但是,单独将WebView的RenderPriority设置为high并不能解决它...在不触及的情况下使其呈现的唯一方法是将invalidate()命令放在WebView的OnDraw()方法中.这会导致WebView不断重绘.这样(有点),动画是平滑的,页面加载非常快,但它会导致WebView的性能下降.
我也看过这个问题(与我的非常相似),但没有好的答案.Android WebView无法在用户交互之前完全呈现内容
通过性能下降,我的意思是输入.文本输入滞后,WebView本身无法处理以前发生的事情.使用invalidate()方法调用对浏览器进行基准测试会使基准测试性能下降约8%.我知道基准测试不是一切,但它告诉我连续绘图使系统紧张并导致系统忽略其他任务.
结论... Android 4.2.2中的WebView在触摸之前不会呈现.我知道解决这个问题的唯一方法是在WebView的onDraw()方法中调用invalidate().这对性能不利,我正在寻找一种不同的方法来解决这个问题.
魔法代码(我目前正在使用)......
class MyWebView extends WebView
{
@Override
onDraw(Canvas canvas)
{
invalidate();
super.OnDraw(canvas);
}
}
Run Code Online (Sandbox Code Playgroud)
去掉
invalidate();
Run Code Online (Sandbox Code Playgroud)
直到触摸它才会渲染.
有没有人建议如何使WebView渲染(除了我做过)?顺便说一句,这是我在Stack上问过的第一个问题,如果我不清楚或者我做错了什么,请原谅我.
编辑:我在这里发现了一个关于类似问题的问题并且它已经解决,问题是,我不明白答案甚至意味着什么.如果有人能够启发我可能会有所帮助.
我在logcat中收到此错误
E/chromium(1243): external/chromium/net/disk_cache/backend_impl.cc:2022: [0705/172030:ERROR:backend_impl.cc(2022)] Corrupt Index file
Run Code Online (Sandbox Code Playgroud) 我在Android中的Webview有问题,它是JavascriptInterfaces.
我将一个字符串传递给JavascriptInterface.调试时,我在Android应用程序中收到正确的字符串.问题:有时我得到一个Uncaught Error:在NPObject上调用错误的方法.
有人知道为什么吗?
Java中的接口:
public class JSInterfaceGame extends JSInterface {
@JavascriptInterface
public void setShareText(String share){
shareText = share;
if(mJSInterfaceListener != null)
mJSInterfaceListener.onParametersChanged(SHARE_TEXT);
}
Run Code Online (Sandbox Code Playgroud)
片段中onCreateView-Method的初始化:
online = (WebView) rootView.findViewById(R.id.online);
online.setWebViewClient(new WISWebviewClient() {
@Override
public void onStatusChanged(final WebView view, int progress, long duration) {
//unrelated
}
});
WebSettings ws = online.getSettings();
ws.setJavaScriptEnabled(true);
ws.setUserAgentString(USER_AGENT);
ws.setCacheMode(WebSettings.LOAD_DEFAULT);
ws.setRenderPriority(WebSettings.RenderPriority.HIGH);
SharedPreferences settings = getActivity().getSharedPreferences(GameActivity.PREFERENCES, Context.MODE_PRIVATE);
mJSInterface = new JSInterfaceGame();
mJSInterface.setJSInterfaceListener(this); // Defined elsewhere in this class.
mJSInterface.setPlayerName(settings.getString(GameActivity.PREFS_PlAYERNAME, null));
online.addJavascriptInterface(mJSInterface, "JSInterface");
online.loadUrl("http://myurl.something");
Run Code Online (Sandbox Code Playgroud)
在Javascript中调用:
function makeShareText() {
var …Run Code Online (Sandbox Code Playgroud) 我有一项活动通过在网页浏览中显示重定向网址时拦截重定向网址来执行OAuth身份验证.但是,由于某种原因,onPageFinished函数以某种方式被调用两次,这真的弄乱了我的应用程序.这是代码:
public class WebViewActivity extends Activity {
private WebView gWebView;
final String REDIRECT_URI = "https://localhost:5000/receive_code";
final String CLIENT_ID = "can't post it here";
final String CLIENT_SECRET = "can't post it here";
final String SCOPE = "basic names genomes analyses";
Hashtable<String, String> riskPairs;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
gWebView = (WebView) findViewById(R.id.webView1);
gWebView.loadUrl("https://api.23andme.com/authorize/?redirect_uri="
+ REDIRECT_URI + "&response_type=code&client_id=" + CLIENT_ID
+ "&scope=" + SCOPE);
Log.d("WEBVIEW", "got to webpage");
gWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url); …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它大量使用webview.我的要求是能够查看html并将javascript注入正在加载的页面,甚至是iframe.我用android附带的webview完成了这个,但它的效果并不好.
那么还有其他项目可以提供相同的html5浏览体验,但是对开发人员更友好吗?是否有可能采用开源Web视图代码并构建我自己的代码或者这只是一个疯狂的想法?
谢谢.
我构建了一个应用程序,通过WebView播放YouTube iframe视频,并使用YouTube iframe api控制视频.
(我知道适用于Android的YouTube SDK可能更适合Android应用开发,但目前只有iframe api符合我们的需求)
我发现在Android 4.4 KitKat下运行时应用程序会随机崩溃.
这是Google Play控制台的完整崩溃日志:
Native crash at /system/lib/libc.so
in /system/lib/libc.so (tgkill+12), /system/lib/libc.so (pthread_kill+48)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/lt02ltespr/lt02ltespr:4.4.2/KOT49H/T217SVPUBNH4:user/release-keys'
Revision: '9'
pid: 10404, tid: 10660, name: rbbb.myapp >>> com.kkkkrbbb.myapp <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
r0 00000000 r1 000029a4 r2 00000006 r3 00000000
r4 00000006 r5 00000000 r6 000029a4 r7 0000010c
r8 630b10d0 r9 578211e8 …Run Code Online (Sandbox Code Playgroud) android android-webview android-youtube-api android-4.4-kitkat
当我不滚动页面时,我想在WebView中隐藏垂直滚动条.至于现在,它总是显示.我以编程方式创建WebView,因此我的问题与以编程方式自定义滚动条有关.谢谢!
在Android Lollipop Web视图中,我想让用户下载生成的txt文件:
// Store some text in a data URL.
var dataUrl = (window.URL || window.webkitURL).createObjectURL(
new Blob(["Hello world. :)"]));
// Create a link that lets the user download the text file as hello.txt.
var downloadLink = document.createElement('a');
downloadLink.setAttribute('href', dataUrl);
downloadLink.innerHTML = 'Click to download.';
// Working with David on this. I did the same thing.
// Fyi, setting the 'download' attribute just makes hitting the link
// nop, ie. do nothing at all in the web view, so …Run Code Online (Sandbox Code Playgroud)