该方法从不在本地使用



它说"方法openFileChooser(…)从来没有在本地使用",当我混淆时,proguard删除它们,所以它不起作用。没有混淆,它的工作没有任何问题。我怎样才能避免移除它们?下面是代码:

mWeb.setWebChromeClient(new WebChromeClient()
    {
        public void openFileChooser(ValueCallback<Uri> uploadMsg) {  
            mUploadMessage = uploadMsg;  
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
            i.addCategory(Intent.CATEGORY_OPENABLE);  
            i.setType("image/*");  
            Main.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);  
           }
        // for android 4.1
        public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
               mUploadMessage = uploadMsg;  
               Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
               i.addCategory(Intent.CATEGORY_OPENABLE);  
               i.setType("image/*");  
               Main.this.startActivityForResult( Intent.createChooser( i, "File Chooser" ), Main.FILECHOOSER_RESULTCODE );
           }
    });

我不能使用@Override,我认为这是他们的错误,我不能重写。@KeepName也没用

openFileChooser不是一个公共Android API,也从来没有成为SDK的一部分(这就是为什么你不能@Override它)。这是一个内部API,只是碰巧在许多Android版本(但不是KitKat+)和Android设备上工作,但仅此而已。

你可以用

告诉ProGuard保留这个方法
-keepclassmembers class * extends android.webkit.WebChromeClient {
    public void openFileChooser(android.webkit.ValueCallback, java.lang.String, java.lang.String);
}

相关内容

  • 没有找到相关文章

最新更新