2016-02-15 4 views
1

Je développe un exemple d'application Android pour la passerelle de paiement d'EBS. J'ai importé leur SDK dans le projet Android.comment accéder à la méthode protégée d'un autre paquet dans andorid

EBS sdk fourni une classe Getter et Setter à savoir "PaymentRequest" classe et nous devons définir toutes les valeurs à la méthode de setter de "PaymentRequest" classe.

Mais je veux définir la clé de hachage sécurisé à une méthode mais cette méthode est protégée dans la classe PaymentRequest. et aussi cette classe a un constructeur privé. alors comment puis-je mettre la clé de hachage sécurisé à la méthode protégée

protected String getSecureKeyHash() { 
     return this.secureKeyHash; 
    } 

protected void setSecureKeyHash(String secureKeyHash) { 
    this.secureKeyHash = secureKeyHash; 
} 

Comment accéder à ces méthodes de MyActivity,

PaymentRequest.getInstance().setSecureKeyHash("sdf"); 

Mais setSecureKeyHash n'est pas accessible

+0

Soit vous utilisez la réflexion ou vous Sous-classe de la classe PaymentRequest. Mais est-ce vraiment la voie à suivre avec leur SDK? Peut-être qu'il y a une bonne raison, pourquoi cette méthode est-elle protégée? Avez-vous demandé leur soutien? – Christopher

+0

J'ai demandé le support mais pas encore rejoué –

Répondre

0
PaymentRequest mPaymentRequest = PaymentRequest.getInstance(); 
Class c = mPaymentRequest.getClass(); 
     try { 
      Method method = c.getDeclaredMethod("setSecureKeyHash",String.class); 
      method.invoke(mPaymentRequest,"ur value"); 
     } catch (NoSuchMethodException e) { 
      e.printStackTrace(); 
     } catch (InstantiationException e) { 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      e.printStackTrace(); 
     } 
} 
+0

java.lang.IllegalAccessException: Impossible d'accéder à la méthode: void com.ebs.android.sdk.PaymentRequest.setSecureKeyHash (java.lang.String) –

+0

Définissez la méthode accessible avant de l'appeler: méthode. setAccessible (true) https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/AccessibleObject.html#setAccessible -boolean- – Christopher

+0

avez-vous déjà fait cela? –