从我的Android应用程序打开YouTube应用。如何通过ID? [英] Open youtube app from my android app. How to pass the 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.
这篇关于从我的Android应用程序打开YouTube应用。如何通过ID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!