我正在编写一款试图播放YouTube视频的Titanium应用。我的目标是让用户保持在应用内部,因此调用原生youtube应用程序(我已经可以做到)是不可能的。我的代码适用于iOS,但仅限于嵌入webView支持内容。不幸的是,Android的情况并非如此。
似乎http://code.google.com/p/android-youtube-player/wiki/OpenYouTubePlayerActiviyInstructions将解决我的问题,但我不确定如何从Titanium中使用它。该文档建议从Android执行此操作:
Intent lVideoIntent = new Intent(null, Uri.parse("ytpl://"+YOUTUBE_PLAYLIST_ID), this, OpenYouTubeActivity.class);//public Intent (String action, Uri uri, Context packageContext, Class<?> cls) from Android doc
startActivity(lVideoIntent);
因此,利用http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.Android.Intent-object.html和http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.Android.Activity-object.html作为指南,提出了:
var intent = Ti.Android.createIntent({
action: 'null',
data: 'ytv://'+vguid,
packageName: 'com.keyes.youtube',
className: 'com.keyes.youtube.OpenYouTubeActivity'
});
Ti.Android.Activity.startActivity(intent);
在我的TiApp.XML中,我添加了这个:
<android xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<activity android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity>
</android>
当我尝试运行代码时,我收到此错误: TypeError:无法调用未定义的方法“startActivity”(file:///android_asset/Resources/app.js#162) 其中162是startActivity(intent)的行号;
我认为它与源路径不在类路径上有关(我尝试仅使用他的.jar以及单独的.java文件)和/或它不用作模块。我使用了一个iOS模块,但不知道如何编写我自己的Android模块,更不用说将某人的代码移植到模块中了。
有任何帮助吗?我确信这是很多Titanium用户都在争夺的东西。
编辑1
我已经取得了一些进展,仍然没有解决方案。我已经走了“模块”路线,因为我还没有看到另一种方法来获取项目构建中包含的jar / java文件。我将模块构建为“ytModule”,并通过添加
将其包含在内<module version="0.1">com.keyes.ytModule</module>
到tiapp.xml。然后我得到
[DEBUG] Looking for Titanium Module id: com.keyes.ytModule, version: 0.1, platform: <any platform>
[DEBUG] module_id = com.keyes.ytModule
[DEBUG] appending module: com.keyes.ytModule.YtplayerModule
当我从TitaniumStudio构建时。我正在努力,并将继续发布更新/尝试建议
答案 0 :(得分:1)
答案 1 :(得分:0)
The reason is its not able to call the Activity's method which is
抛出此错误。
Ti.Android.currentActivity.startActivity(intent)
这应该有用。