从我的Andr​​oid应用程序打开YouTube应用。如何通过ID? [英] Open youtube app from my android app. How to pass the id?

查看:109
本文介绍了从我的Andr​​oid应用程序打开YouTube应用。如何通过ID?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很新到Android。我需要显示在概述了一堆影片,被从API检索互联网上的应用程序

这里的API是什么样子:


  

[{名:9VJirQKuoxs,形象:http://i.ytimg.com/vi/9VJirQKuoxs/default.jpg}]


我想这工作。 姓名:是视频的ID,我需要打开YouTube应用,并打开这个particulair视频。如何打开呢?我从PHP开发快到了,我无法弄清楚,因为我仍然在心中的一个网络的状态。任何人都可以把我在正确的道路上?或者甚至提供一个例子?

谢谢,如果我需要提供code请询问。

编辑:

我测试,以打开YouTube应用和它的作品,但我需要打开上已被点击上特定项目的应用程序。

我如何获得的点击项目的变量?在这种情况下,该变量是一个字符串称为VIDEO_ID
这里就是变量得到所取得的部分:

 字符串的URL =参数[0];
            HttpClient的客户端=新DefaultHttpClient();
            HTTPGET GET =新HTTPGET(URL);
            HTT presponse响应;
            响应= client.execute(获取);
            InputStream的内容= response.getEntity()的getContent()。
            BufferedReader中读者;
            读者=新的BufferedReader(新的InputStreamReader(内容));
            串线;
            JSON字符串=;
            而((行= reader.readLine())!= NULL){
                JSON + =行;
            }            JSONArray阵列=新JSONArray(JSON);
            ArrayList的< JSONFields> ALDATA =新的ArrayList< JSONFields>();
            的for(int i = 0; I< array.length();我++){                JSONFields数据=新JSONFields();
                JSONObject的OBJ = array.getJSONObject(I)                data.setName(obj.getString(名字));
                data.setUrl(obj.getString(URL));
                data.setVideoid(obj.getString(名字));                alData.add(数据);
            }
            的System.out.println(数据成功地返回);
            返回ALDATA;

这里是的onclick监听器

  =列表视图(ListView控件)findViewById(R.id.listView1);
    listview.setClickable(真);
    listview.setOnItemClickListener(新AdapterView.OnItemClickListener(){          @覆盖
          公共无效onItemClick(适配器视图<>为arg0,ARG1查看,INT位置,长ARG3){            的System.out.println(参数3);
           }
        });

请帮我出!

EDIT2:

 包com.bounty4u.jsonparsing.data;公共类JSONFields {    私人字符串名称;
    私人字符串URL;
    私人字符串VIDEO_ID;    公共字符串的getName(){
        返回名称;
    }
    公共无效setname可以(字符串名称){
        this.name =名称;
    }
    公共字符串的getURL(){
        返回URL;
    }
    公共无效setUrl(字符串URL){
        this.url =网址;
    }
    公共无效setVideoid(字符串VIDEO_ID){
        this.video_id = VIDEO_ID;
    }    公共字符串getVideoid(){
        返回VIDEO_ID;
    }
}

另外这是错误日志:


  

16 05-22:44:42.280:E / AndroidRuntime(24776):致命异常:主要
  05-22 16:44:42.280:E / AndroidRuntime(24776):显示java.lang.NullPointerException
  05-22 16:44:42.280:E / AndroidRuntime(24776):在com.bounty4u.jsonparsing.MainActivity $ 1.onItemClick(MainActivity.java:49)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在android.widget.AdapterView.performItemClick(AdapterView.java:298)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在android.widget.AbsListView.performItemClick(AbsListView.java:1202)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在android.widget.AbsListView $ PerformClick.run(AbsListView.java:2975)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在android.widget.AbsListView $ 1.run(AbsListView.java:3657)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在android.os.Handler.handleCallback(Handler.java:615)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在android.os.Handler.dispatchMessage(Handler.java:92)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在android.os.Looper.loop(Looper.java:137)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在android.app.ActivityThread.main(ActivityThread.java:4765)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在java.lang.reflect.Method.invokeNative(本机方法)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在java.lang.reflect.Method.invoke(Method.java:511)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
  05-22 16:44:42.280:E / AndroidRuntime(24776):在dalvik.system.NativeStart.main(本机方法)


编辑:

  JSONArray阵列=新JSONArray(JSON);
            ArrayList的< JSONFields> ALDATA =新的ArrayList< JSONFields>();
            的for(int i = 0; I< array.length();我++){                JSONFields数据=新JSONFields();
                JSONObject的OBJ = array.getJSONObject(I)                data.setName(obj.getString(名字));
                data.setUrl(obj.getString(URL));
                data.setVideoid(obj.getString(VIDEO_ID));
                的System.out.println(视频ID:+ obj.getString(VIDEO_ID));                alData.add(数据);
            }


解决方案

尝试是这样的:

startActivity(新意图(Intent.ACTION_VIEW,Uri.parse(http://www.youtube.com/watch?v=9VJirQKuoxs)));

Android将让你选择你想要打开的视频(浏览器或YouTube应用程序)的方式。
这应该工作的实际设备上,但不是在模拟器。

希望它帮助。

I am quite new to Android. I need to make an app that displays a bunch videos in an overview that gets retrieved from a API on the internet

Here's what the API looks like:

[{"name":"9VJirQKuoxs","image":"http://i.ytimg.com/vi/9VJirQKuoxs/default.jpg"}]

That works as I want. The "name: " is the video ID and I need to open the Youtube app and open this particulair video. How do I open this? I am coming from PHP development and I cannot figure it out since I am still in a "web" state of mind. Can anyone put me on the right path? Or maybe even provide an example?

Thanks, if I need to provide code please ask.

EDIT:

I tested to open the youtube app and it works but I need to open the app on a specific item that has been clicked on.

How do I get the variable of the clicked item? In this case the variable is a string called video_id Here's the part where the variables get made:

String url = params[0];
            HttpClient client = new DefaultHttpClient();
            HttpGet get = new HttpGet(url);
            HttpResponse response;
            response = client.execute(get);
            InputStream content = response.getEntity().getContent();
            BufferedReader reader;
            reader = new BufferedReader(new InputStreamReader(content));
            String line;
            String json = "";
            while ((line = reader.readLine()) != null) {
                json += line;
            }

            JSONArray array = new JSONArray(json);
            ArrayList<JSONFields> alData = new ArrayList<JSONFields>();
            for (int i = 0; i < array.length(); i++) {

                JSONFields data = new JSONFields();
                JSONObject obj = array.getJSONObject(i);

                data.setName(obj.getString("name"));
                data.setUrl(obj.getString("url"));
                data.setVideoid(obj.getString("name"));

                alData.add(data);
            }
            System.out.println("Data returned sucessfully");
            return alData;

And here is the onclick listener

listview = (ListView) findViewById(R.id.listView1);
    listview.setClickable(true);
    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

          @Override
          public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

            System.out.println(arg3);
           }
        });

Please help me out!

EDIT2:

package com.bounty4u.jsonparsing.data;

public class JSONFields {

    private String name;
    private String url;
    private String video_id;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public void setVideoid(String video_id){
        this.video_id = video_id;
    }

    public String getVideoid(){
        return video_id;
    }
}

Also this is the error log:

05-22 16:44:42.280: E/AndroidRuntime(24776): FATAL EXCEPTION: main 05-22 16:44:42.280: E/AndroidRuntime(24776): java.lang.NullPointerException 05-22 16:44:42.280: E/AndroidRuntime(24776): at com.bounty4u.jsonparsing.MainActivity$1.onItemClick(MainActivity.java:49) 05-22 16:44:42.280: E/AndroidRuntime(24776): at android.widget.AdapterView.performItemClick(AdapterView.java:298) 05-22 16:44:42.280: E/AndroidRuntime(24776): at android.widget.AbsListView.performItemClick(AbsListView.java:1202) 05-22 16:44:42.280: E/AndroidRuntime(24776): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2975) 05-22 16:44:42.280: E/AndroidRuntime(24776): at android.widget.AbsListView$1.run(AbsListView.java:3657) 05-22 16:44:42.280: E/AndroidRuntime(24776): at android.os.Handler.handleCallback(Handler.java:615) 05-22 16:44:42.280: E/AndroidRuntime(24776): at android.os.Handler.dispatchMessage(Handler.java:92) 05-22 16:44:42.280: E/AndroidRuntime(24776): at android.os.Looper.loop(Looper.java:137) 05-22 16:44:42.280: E/AndroidRuntime(24776): at android.app.ActivityThread.main(ActivityThread.java:4765) 05-22 16:44:42.280: E/AndroidRuntime(24776): at java.lang.reflect.Method.invokeNative(Native Method) 05-22 16:44:42.280: E/AndroidRuntime(24776): at java.lang.reflect.Method.invoke(Method.java:511) 05-22 16:44:42.280: E/AndroidRuntime(24776): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 05-22 16:44:42.280: E/AndroidRuntime(24776): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 05-22 16:44:42.280: E/AndroidRuntime(24776): at dalvik.system.NativeStart.main(Native Method)

EDIT:

    JSONArray array = new JSONArray(json);
            ArrayList<JSONFields> alData = new ArrayList<JSONFields>();
            for (int i = 0; i < array.length(); i++) {

                JSONFields data = new JSONFields();
                JSONObject obj = array.getJSONObject(i);

                data.setName(obj.getString("name"));
                data.setUrl(obj.getString("url"));
                data.setVideoid(obj.getString("video_id"));
                System.out.println("Video ID: " + obj.getString("video_id"));

                alData.add(data);
            }

解决方案

Try something like this:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=9VJirQKuoxs")));

Android will let you choose the way you want to open the video (browser or youtube app). This should works on a real device but not on emulator.

Hope it helps.

这篇关于从我的Andr​​oid应用程序打开YouTube应用。如何通过ID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆