Changing Android's default MediaPlayer User-Agent string

拜拜、爱过 提交于 2019-12-17 20:28:35

问题


Is it possible to change Android's default MediaPlayer User-Agent string? If so, how?


回答1:


    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");
        }
    }

I've tested, it worked at:

Yulong Coolpad 8722V Android 5.1

Nox AVD Android 4.4

Hopes work at your device!




回答2:


You 'just' need to overwrite HTTPDataSource.cpp (see HTTPDataSource::read_at). And then inject it to the core of media player =) (not so easy thing i need to say) look at this research first - The flow of events during the Media Player Creation in Android Framework



来源:https://stackoverflow.com/questions/7267502/changing-androids-default-mediaplayer-user-agent-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!