Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何在android中从fragment webview上传文件?_File_Webview_Upload - Fatal编程技术网

File 如何在android中从fragment webview上传文件?

File 如何在android中从fragment webview上传文件?,file,webview,upload,File,Webview,Upload,我使用了两个片段的tabhost。一个片段用于列表,另一个用于webview。从那个片段我必须从画廊上传文件。下面是我的webview片段 public class AppleFragment extends Fragment{ private static final String TAG = "SocialActivityFragment"; //protected static final int FILECHOOSER_RESULTCODE = 0; WebView browser;

我使用了两个片段的tabhost。一个片段用于列表,另一个用于webview。从那个片段我必须从画廊上传文件。下面是我的webview片段

public class AppleFragment extends Fragment{

private static final String TAG = "SocialActivityFragment";
//protected static final int FILECHOOSER_RESULTCODE = 0;
WebView browser;
static String cookieString;
ProgressBar Pbar;
HashMap<String, String> headerMap = new HashMap<String, String>();
 private ValueCallback<Uri> mUploadMessage;  
 final static int FILECHOOSER_RESULTCODE=1;  

 @Override
public void onActivityResult(int requestCode, int resultCode,Intent intent) {  
  if(requestCode==FILECHOOSER_RESULTCODE)  
  {  
   if (null == mUploadMessage) return;  
            Uri result = intent == null || resultCode != Activity.RESULT_OK ? null  
                    : intent.getData();  
            mUploadMessage.onReceiveValue(result);  
            mUploadMessage = null;  
  }
  }  
@SuppressLint({ "NewApi", "SetJavaScriptEnabled" })
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    /** Creating array adapter to set data in listview */
    //ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity().getBaseContext(), R.layout.social_activities_layout, apple_versions);
    LayoutInflater layoutInflater = (LayoutInflater) getActivity()
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       View layout = layoutInflater.inflate(R.layout.social_layout, null);
    Pbar = (ProgressBar) layout.findViewById(R.id.pB1);
    String strResponse = util.makeWebCall("http://google.com");

    DefaultHttpClient mClient = util.getClient();


    Cookie sessionInfo;
    List<Cookie> cookies = mClient.getCookieStore().getCookies();
    if (! cookies.isEmpty()){
        CookieSyncManager.createInstance(getActivity().getApplicationContext());
        CookieManager cookieManager = CookieManager.getInstance();

        for(Cookie cookie : cookies){
                sessionInfo = cookie;
                cookieString = sessionInfo.getName() + "=" + Sessions.getPhpSessid(getActivity().getApplicationContext()) + "; domain=" + sessionInfo.getDomain();
                cookieManager.setCookie("http://youornot.com/social/", cookieString);
                CookieSyncManager.getInstance().sync();
                //Toast.makeText(getApplicationContext(), cookieString, Toast.LENGTH_LONG).show();
        }
}

AlertDialogManager alert=new AlertDialogManager();
ConnectionDetector cd=new ConnectionDetector(getActivity().getApplicationContext());
if(!cd.isConnectedToInternet())
{
    alert.showAlertDialog(getActivity(), "Error..!", "You have not Connected to Internet", true);
}

browser=(WebView)layout.findViewById(R.id.webBrowser);
  // WebView browser = new WebView(SocialActivity.this);

WebSettings settings = browser.getSettings();

browser.setScrollBarStyle(browser.OVER_SCROLL_IF_CONTENT_SCROLLS);

WebViewClient wvClient = new WebViewClient();
browser.setWebViewClient(wvClient);
browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);


browser.setWebChromeClient(new WebChromeClient() {

     @SuppressWarnings("unused")
    public void openFileChooser(ValueCallback<Uri> uploadMsg) {  

         mUploadMessage = uploadMsg;  
         Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
         i.addCategory(Intent.CATEGORY_OPENABLE);  
         i.setType("*/*");  
         getActivity().startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);  

        }

     // For Android 3.0+
        @SuppressWarnings("unused")
        public void openFileChooser( ValueCallback uploadMsg, String acceptType ) {
        mUploadMessage = uploadMsg;
        Intent i = new Intent(Intent.ACTION_GET_CONTENT);
        i.addCategory(Intent.CATEGORY_OPENABLE);
        i.setType("*/*");
        getActivity().startActivityForResult(
        Intent.createChooser(i, "File Browser"),
        FILECHOOSER_RESULTCODE);
        }

     //For Android 4.1
        @SuppressWarnings("unused")
        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("*/*");  
            getActivity().startActivityForResult( Intent.createChooser( i, "File Chooser" ),FILECHOOSER_RESULTCODE );

        }

    public void onProgressChanged(WebView view, int progress) 
       {
       if(progress < 100 && Pbar.getVisibility() == ProgressBar.GONE){
           Pbar.setVisibility(ProgressBar.VISIBLE);
           //txtview.setVisibility(View.VISIBLE);
       }
       Pbar.setProgress(progress);
       if(progress == 100) {
           Pbar.setVisibility(ProgressBar.GONE);
          // txtview.setVisibility(View.GONE);
       }
    }
});

headerMap.put("Cookie", cookieString);
browser.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_UP:
                //The key is this line. 
                v.requestFocusFromTouch();  
                break;
        }               
        return false;
    }
});
browser.loadUrl("http://google.com", headerMap);


    return layout;//super.onCreateView(inflater, container, savedInstanceState);
}

@Override
public void onStart() {
        super.onStart();

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Auto-generated method stub
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.web_menu, menu);
}

@SuppressLint("NewApi")
@Override
public boolean onOptionsItemSelected(MenuItem item) {
   // handle item selection
   switch (item.getItemId()) {
      case R.id.refresh:
          browser.reload();
         // browser.loadUrl("http://google.com", headerMap);
         return true;
      default:
         return super.onOptionsItemSelected(item);
   }
}   
}
公共类AppleFragment扩展片段{
私有静态最终字符串TAG=“SocialActivityFragment”;
//受保护的静态最终int文件选择器\u RESULTCODE=0;
网络视图浏览器;
静态字符串cookieString;
ProgressBar-Pbar;
HashMap headerMap=新HashMap();
private ValueCallback mUploadMessage;
最终静态int文件选择器_RESULTCODE=1;
@凌驾
activityresult上的公共void(int-requestCode、int-resultCode、Intent-Intent){
if(requestCode==FILECHOOSER\u RESULTCODE)
{  
if(null==mUploadMessage)返回;
Uri result=intent==null | | resultCode!=Activity.result\u确定?null
:intent.getData();
mUploadMessage.onReceiveValue(结果);
mUploadMessage=null;
}
}  
@SuppressLint({“NewApi”,“SetJavaScriptEnabled”})
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
/**正在创建阵列适配器以在listview中设置数据*/
//ArrayAdapter=新的ArrayAdapter(getActivity().getBaseContext(),R.layout.social_activities_layout,apple_版本);
LayoutInflater LayoutInflater=(LayoutInflater)getActivity()
.getSystemService(上下文布局\充气机\服务);
视图布局=布局更平坦。充气(R.layout.social\u布局,空);
Pbar=(ProgressBar)layout.findviewbyd(R.id.pB1);
字符串strResponse=util.makeWebCall(“http://google.com");
DefaultHttpClient mClient=util.getClient();
Cookie sessionInfo;
列出cookies=mClient.getCookieStore().getCookies();
如果(!cookies.isEmpty()){
createInstance(getActivity().getApplicationContext());
CookieManager CookieManager=CookieManager.getInstance();
用于(Cookie:cookies){
sessionInfo=cookie;
cookieString=sessionInfo.getName()+“=”+Sessions.GetpSessid(getActivity().getApplicationContext())+“domain=“+sessionInfo.getDomain()”;
cookieManager.setCookie(“http://youornot.com/social/“,cookieString);
CookieSyncManager.getInstance().sync();
//Toast.makeText(getApplicationContext(),cookieString,Toast.LENGTH_LONG).show();
}
}
AlertDialogManager alert=新建AlertDialogManager();
ConnectionDetector cd=新的ConnectionDetector(getActivity().getApplicationContext());
如果(!cd.isconnectedPointerNet())
{
showAlertDialog(getActivity(),“Error..”,“您尚未连接到Internet”,true);
}
browser=(WebView)layout.findviewbyd(R.id.webBrowser);
//WebView浏览器=新的WebView(SocialActivity.this);
WebSettings=browser.getSettings();
browser.setScrollBarStyle(如果内容滚动,则在浏览器上滚动);
WebViewClient wvClient=新的WebViewClient();
setWebViewClient(wvClient);
browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
setWebChromeClient(新的WebChromeClient(){
@抑制警告(“未使用”)
public void openFileChooser(ValueCallback uploadMsg){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 集合类型(“*/*”);
getActivity();
}
//适用于Android 3.0+
@抑制警告(“未使用”)
public void openFileChooser(ValueCallback uploadMsg,String acceptType){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 集合类型(“*/*”);
getActivity().startActivityForResult(
Intent.createChooser(i,“文件浏览器”),
文件选择器\u结果代码);
}
//适用于Android 4.1
@抑制警告(“未使用”)
public void openFileChooser(ValueCallback uploadMsg、字符串接受类型、字符串捕获){
mUploadMessage=上传消息;
意向i=新意向(意向.行动\u获取\u内容);
i、 addCategory(意图。类别可打开);
i、 集合类型(“*/*”);
getActivity();
}
public void onProgressChanged(WebView视图,int-progress)
{
if(进度<100&&Pbar.getVisibility()==ProgressBar.GONE){
Pbar.setVisibility(ProgressBar.VISIBLE);
//txtview.setVisibility(View.VISIBLE);
}
Pbar.setProgress(进度);
如果(进度==100){
Pbar.setVisibility(ProgressBar.GONE);
//txtview.setVisibility(View.GONE);
}
}
});
头部映射放置(“Cookie”,cookieString);
browser.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
case MotionEvent.ACTION\u UP:
//关键是这条线。
v、 requestFocusFromTouch();
打破
}               
返回false;
}
});
browser.loadUrl(“http://google.com“,校长地图);
返回布局;//super.onCreateView(充气机、容器、savedInstanceState);
}
@凌驾
public void onStart(){
super.onStart();
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
设置选项菜单(真);
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u INPUT\u ADJUST\u PAN);
}
@凌驾
创建选项菜单(菜单菜单,菜单充气机){
//TODO自动生成的方法存根
super.onCreateOption
  WebView webView;

  //make HTML upload button work in Webview   
  private ValueCallback<Uri> mUploadMessage;
  private final static int FILECHOOSER_RESULTCODE = 1;

  @Override  
  public void onActivityResult(int requestCode, int resultCode, Intent intent) {  
       if(requestCode==FILECHOOSER_RESULTCODE)  
        {  
            if (null == mUploadMessage) return;  
                     Uri result = intent == null || resultCode != getActivity().RESULT_OK ? null  
                             : intent.getData();  
                     mUploadMessage.onReceiveValue(result);  
                     mUploadMessage = null;  
        }
   }  

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_layout_web, container, false);

        // Web View
        webView = (WebView) view.findViewById(R.id.webView1);

        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setBuiltInZoomControls(true);

        webView.setWebChromeClient(new WebChromeClient(){

             //The undocumented magic method override  
             //Eclipse will swear at you if you try to put @Override here  
             // For Android 3.0+
             public void openFileChooser(ValueCallback<Uri> uploadMsg) {  

                 mUploadMessage = uploadMsg;  
                 Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
                 i.addCategory(Intent.CATEGORY_OPENABLE);  
                 i.setType("image/*");  
                 getActivity().startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);  

                }

             // For Android 3.0+
                public void openFileChooser(ValueCallback uploadMsg, String acceptType ) {
                    mUploadMessage = uploadMsg;
                    Intent i = new Intent(Intent.ACTION_GET_CONTENT);
                    i.addCategory(Intent.CATEGORY_OPENABLE);
                    i.setType("*/*");
                    getActivity().startActivityForResult(Intent.createChooser(i, "File Browser"),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/*");  
                    getActivity().startActivityForResult( Intent.createChooser( i, "File Chooser" ), FILECHOOSER_RESULTCODE );

                }
            });

        webView.loadUrl(yourUrl);

        return view;
  }
      if(requestCode==FILECHOOSER_RESULTCODE)  
         {  

                if (null == this.mUploadMessage) {
                    return;
                }

               Uri result=null;

               try{
                    if (resultCode != getActivity().RESULT_OK) {
                        result = null;
                    } else {
                        // retrieve from the private variable if the intent is null
                        result = intent == null ? mCapturedImageURI : intent.getData(); 
                    } 
                }
                catch(Exception e)
                {
                    Toast.makeText(getActivity().getApplicationContext(), "activity :"+e, Toast.LENGTH_LONG).show();
                }

                mUploadMessage.onReceiveValue(result);
                mUploadMessage = null;
         }
   }  
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
}