更改Android的默认MediaPlayer用户代理字符串

问题描述:

是否可以更改Android的默认MediaPlayer User-Agent字符串?如果是这样,怎么样?更改Android的默认MediaPlayer用户代理字符串

您只需要覆盖HTTPDataSource.cpp(请参阅HTTPDataSource :: read_at)。 然后它注入到媒体播放器=核心)(不是那么容易的事情,我需要说的) 看看这个研究第一 - The flow of events during the Media Player Creation in Android Framework

+0

非常感谢你!我的朋友! – yuankai

+0

如果我想改变它在我的应用程序,而不是改变框架代码,我该怎么做? – yuankai

+0

@dmitry你分享dosent的网址有资源,你可以分享任何其他网址,这将是有益的。 – YLS

String referer="Referer: http://www.google.com/\r\n", 
     useragent="USER-AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36\r\n"; 
    Map<String,String>mhead; 
    VideoView vp; 
    void prepareHeader(){ 
     mhead=new HashMap<String,String>(); 
     if(android.os.Build.VERSION.SDK_INT >20){ 
      //if 5.X or higher, Fix User-Agent be force set by system 
      mhead.put(referer.split(": ")[0],referer.split(": ")[1]); 
      mhead.put(useragent.split(": ")[0],useragent.split(": ")[1]);//"User-Agent" => "USER-AGENT" 
     }else{ 
      //if 4.X or lower, Fix Referer cannot be set 
      mhead.put(useragent.split(": ")[0],useragent.split(": ")[1]+referer);//"User-Agent: ... \r\nReferer: ..." 
     } 
     setVideoURI(Uri.parse(path),mhead); 
    } 
    void setVideoURI(Uri uri,Map<String,String>mHeaders){ 
     try{ 
      Class vpclass=Class.forName("android.widget.VideoView"); 
      Method[]ms=vpclass.getMethods(); 
      Method mTarget=null; 
      for(Method m:ms){ 
       if(m.getName().equals("setVideoURI")) 
        if(m.getParameterTypes().length==2) mTarget=m; 
      } 
      if(mTarget==null){ 
       //AlertDialog(this,"Set Headers Fail","Sorry... your device is not support this way.","ok"); 
      }else{ 
       mTarget.invoke(vp,new Object[]{uri,mHeaders}); 
      } 
     }catch(Exception e){ 
      //AlertDialog(this,"Set Headers Fail",Arrays.toString(e.getStackTrace()),"ok"); 
     } 
    } 

我测试过,它曾在:

宇龙酷派8722V的是Android 5.1

氮氧化物AVD是Android 4.4

工作的希望在您的设备!