该方法从不在本地使用

时间:2014-06-29 13:20:21

标签: android android-webview proguard

它说"方法openFileChooser(...)永远不会在本地使用",当我混淆时,proguard会删除它们,所以它不起作用。没有混淆,它没有任何问题。如何避免将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也没有帮助。

2 个答案:

答案 0 :(得分:0)

openFileChooser不是公开的Android API,也从未成为SDK的一部分(这就是为什么你不能@Override它)。它是一个内部API,恰好适用于许多Android版本(但不是KitKat +)和Android设备,但就是这样。

答案 1 :(得分:0)

您可以告诉ProGuard使用

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