1

私はAndroidにかなり慣れていません。インターネット上の API から取得した概要に多数のビデオを表示するアプリを作成する必要があります。

API は次のようになります。

[{"名前":"9VJirQKuoxs","画像":"http://i.ytimg.com/vi/9VJirQKuoxs/default.jpg"}]

それは私が望むように機能します。「name:」は動画 ID であり、YouTube アプリを開いてこの特定の動画を開く必要があります。これを開くにはどうすればよいですか?私はPHP開発から来ていますが、まだ「Web」の心の状態にあるので、それを理解することはできません. 誰かが私を正しい道に導くことができますか? または、例を提供することさえできますか?

ありがとうございます。コードを提供する必要がある場合は、お問い合わせください。

編集:

YouTube アプリを開くことをテストしましたが、動作しますが、クリックされた特定のアイテムでアプリを開く必要があります。

クリックされたアイテムの変数を取得するにはどうすればよいですか? この場合、変数は video_id という文字列です。変数が作成される部分は次のとおりです。

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;

そして、これがonclickリスナーです

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

私を助けてください!

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

また、これはエラーログです:

05-22 16: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(ルーパー) .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(Native Method) 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(ネイティブ メソッド) で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(ネイティブメソッド)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(ネイティブメソッド)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 (ネイティブ メソッド) で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 (ネイティブ メソッド) で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): at 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 (ネイティブ メソッド) で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): at 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 (ネイティブ メソッド) で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): 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): 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(ネイティブメソッド)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): 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): 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(ネイティブメソッド)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(ネイティブ メソッド) で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(ネイティブ メソッド) で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(ネイティブ メソッド) で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 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);
            }
4

4 に答える 4

4

次のようなことを試してください:

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

Android では、ビデオを開く方法 (ブラウザーまたは YouTube アプリ) を選択できます。これは実際のデバイスでは機能しますが、エミュレーターでは機能しません。

それが役に立てば幸い。

于 2013-05-22T12:02:23.390 に答える
0

上記の Damien R の提案を使用して、より完全な例を作成しました。問題がなければ、エラーはリスト処理コードの別の場所にあるはずです。

package com.redchillipadi.youtube;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String videoID = "9VJirQKuoxs";
        //TODO: Sanitize input to prevent code injection
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v="+videoID)));
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
于 2013-06-11T10:33:00.157 に答える
0

これを試して:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId)); 
intent.putExtra("VIDEO_ID", videoId); 
startActivity(intent); 
于 2013-06-11T08:49:45.723 に答える