【问题标题】:deezer appcelerator module for android适用于 Android 的 deezer appcelerator 模块
【发布时间】:2013-08-22 12:27:07
【问题描述】:

我正在为钛创建一个 deezer 模块。

我在可视化登录消息时遇到问题。

这是我的DeezerAndroidModule.java(或其中的重要部分)

@Kroll.module(name="DeezerAndroidModule", id="deezer.android")
public class DeezerAndroidModuleModule extends KrollModule
{
    private static final String TAG = "DeezerAndroidModuleModule";
        private final String APP_ID = "xxx";
        private final static String[] PERMISSIONS = new String[]{"basic_access","offline_access","email"};
    private DeezerInterface deezerInterface;
    private     DeezerConnect connection;
        {...}
    @Kroll.method
    public void loginDeezer()
    {

        connection.authorize(deezerInterface, PERMISSIONS, new ReconnectDialogHandler());

    }
        @Kroll.method @Kroll.getProperty
    public String userId()
    {

        DeezerRequest request = new DeezerRequest( "/user/me" );
        String result = null;
        try {
            result = connection.requestSync( request );
        }//try
        catch( MalformedURLException ex ) {

        }//catch
        catch( IOException ex ) {

        }//catch
        catch (OAuthException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (DeezerError e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;

    }
        {...}
    class ReconnectDialogHandler implements DialogListener {

        @Override
        public void onComplete(final Bundle values) {
            SessionStore sessionStore = new SessionStore();
            sessionStore.save( connection, deezerInterface );

        }//met

        @Override
        public void onDeezerError(final DeezerError deezerError) {

        }//met

        @Override
        public void onError(final DialogError dialogError) {

        }//met

        @Override
        public void onCancel() {

        }//met

        @Override
        public void onOAuthException(OAuthException oAuthException) {

        }//met


    }

问题是当我调用loginDeezer()函数时,应用程序抛出了一个通用的Java Exception而不提示登录视图...

这是一个 logcat 标题

W/System.err( 6737): java.lang.NullPointerException
W/System.err( 6737):    at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:412)
W/System.err( 6737):    at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeConnection(HttpsURLConnectionImpl.java:378)
W/System.err( 6737):    at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1018)
W/System.err( 6737):    at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:512)
W/System.err( 6737):    at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:258)
W/System.err( 6737):    at com.deezer.sdk.b.a(Unknown Source)
W/System.err( 6737):    at com.deezer.sdk.b.a(Unknown Source)
W/System.err( 6737):    at com.deezer.sdk.DeezerConnectImpl.requestSync(Unknown Source)
W/System.err( 6737):    at deezer.android.DeezerAndroidModuleModule.userId(DeezerAndroidModuleModule.java:84)
W/System.err( 6737):    at org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(Native Method)
W/System.err( 6737):    at org.appcelerator.kroll.runtime.v8.V8Object.fireEvent(V8Object.java:64)
W/System.err( 6737):    at org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:835)
W/System.err( 6737):    at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1059)
W/System.err( 6737):    at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err( 6737):    at android.os.Looper.loop(Looper.java:130)
W/System.err( 6737):    at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)

我的代码有什么不正确的地方?

【问题讨论】:

  • 能否请您发布完整的堆栈跟踪和错误消息?
  • 查看更改@XGouchet 似乎没有从模块加载 .jar 和 .so deezer android sdk 文件......怎么做?
  • 从您的堆栈跟踪中,jar 显然已加载。您似乎遇到了 SSL 连接问题。您使用的是哪个版本的 Deezer SDK?
  • 最新的。 v0.9.3 我在iOS版本没有问题。一切正常。
  • authorize 方法不是同步的,因为它会调用一个对话框让用户登录。只有当登录完成时,才会调用 RecconectHandler 的 onComplete 方法。

标签: android titanium appcelerator titanium-modules deezer


【解决方案1】:

我解决了这个问题,感谢 XGouchet,只使用了活动:

在 DeezerModule 中

@Kroll.method
public void loginDeezer()
{       
    TiApplication appContext = TiApplication.getInstance();
    Activity act = appContext.getCurrentActivity();
    Intent myIntent = new Intent(act, DeezerInterface.class);
    act.startActivity(myIntent);
}

DeezerInterface 活动类将是 this

【讨论】:

    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多