comment accéder com.android.interne.la téléphonie.CallManager?
Je suis en train d'essayer d'accéder à CallManager
objet de classe de com.android.internal.telephony
paquet.
Voici mon code:
ClassLoader classLoader = TestActivity.class.getClassLoader();
final ClassLoader classLoader = this.getClass().getClassLoader();
try {
final Class<?> classCallManager =
classLoader.loadClass("com.android.internal.telephony.CallManager");
Log.i("TestActivity", classCallManager);
} catch (final ClassNotFoundException e) {
Log.e("TestActivity", e);
}
Malheureusement, c'est jeter un ClassNotFoundException
. La même approche me permet d'avoir accès PhoneFactory
, mais apparemment, je ne suis pas autorisé à accéder à CallManager
.
Si je pouvais atteindre la classe, alors que je voulais continuer en utilisant la classe comme suit:
Method method_getInstance;
method_getInstance = classCallManager.getDeclaredMethod("getInstance");
method_getInstance.setAccessible(true);
Object callManagerInstance = method_getInstance.invoke(null);
Quelqu'un peut-il m'aider sur ce point?
Merci d'avance,
Harsha C
J'ai essayé d'utiliser
ClassLoader.getSystemClassLoader()
, mais cela ne fonctionne pas non plus.OriginalL'auteur Harsha | 2011-01-20
Vous devez vous connecter pour publier un commentaire.
J'ai pu charger avec succès CallManager et de ses méthodes. Cependant, lorsque j'invoque getState(), getActiveFgCallState(), il est toujours de retour RALENTI, même lorsque l'application reçoit des appels différents états de TelephonyManager, c'est à dire TelephonyManager.CALL_STATE_IDLE, TelephonyManager.CALL_STATE_OFFHOOK, TelephonyManager.CALL_STATE_RINGING.
J'ai utilisé le code suivant pour charger la classe et ses méthodes:
Btw, ce que je suis en train de faire est de détecter lorsque le téléphone commence à sonner. J'ai vu dans le code source que l'ALERTE est à l'intérieur de l'événement que je devrais l'écouter. Donc, j'ai essayé d'utiliser CallManager pour obtenir de l'Appel.L'état, plutôt que de Téléphone.État. J'ai aussi essayé d'utiliser registerForPreciseCallStateChanges() de CallManager de classe, mais aucun des approché travaillé jusqu'à présent.
CallManager
lui-même ne fournit aucune information d'appel sans enregistrésPhone
cas, c'est à dire qu'il reçoit des notifications sur l'appel des changements d'état de l'extérieur. Vous accédez à laCallManager
classe à partir de votre app processus et, par conséquent, vous obtenez un vide instance avec des valeurs par défaut dans tous les domaines, alors que l'instance réelle deCallManager
contenantPhone
exemple de la manipulation de l'appel se trouve dans un autre processus, probablement dans un système de services, comme le Service de Téléphonie.OriginalL'auteur tuan
J'ai dû résoudre exactement le même problème - l'obtention de la déconnexion de la cause lors de l'appel raccrocher. Ma solution a été de grep la radio les journaux pour les lignes. Semble fonctionner - j'espère que ça aide.
Je pense que ce n'est pas en travaillant plus depuis Android 4.1, où l'application des journaux peut être lu que par son propre app...
OriginalL'auteur Cyrus
Avez-vous essayé cette méthode trouvée ici, sur ce blog?
Par le chargement du Téléphone.apk peut-être l'idée de faire le tour de l'ClassNotFound erreur d'exception...
OriginalL'auteur t0mm13b
J'ai écrit un programme qui reconnaît les appels téléphoniques et la liste de tous les appels récents dans une liste. Peut-être vous pouvez avoir un coup d'oeil sur ce code et il peut aider je pense.
Tous vous avez besoin est cela:
mais vérifiez cet exemple:
et voici le incomming récepteur d'appel:
OriginalL'auteur sm13294
Je comprends que vous voulez détecter lorsque l'appel est déconnecté. Vous pouvez utiliser à la place la
PhoneStateListener.LISTEN_CALL_STATE
. Par exemple:La droite. Je suis en train d'essayer d'accomplir quelque chose de très similaire (envoi de tonalités DTMF), ce qui nécessite un accès à CallManager. Nous allons voir si on peut le découvrir ensemble.
avez-vous essayé d'accéder au CallManager encore? Suis en train de faire la même chose ici.... 😀 Aussi voir ma réponse ci-dessus... 😀
Non, je crains que non. J'ai regardé dans la façon dont
Phone.apk
t-il, et il semble qu'il a des autorisations spéciales. Je ne me souviens pas l'erreur exacte, mais la seule résolution de se résumait à avoir à la racine du téléphone. Nom de dieu!OriginalL'auteur Paul Lammertsma
Utiliser ceci :
OriginalL'auteur Avadhani Y
A ajouter
READ_PHONE_STATE
dans AndroidManifest.xml ?Je pense que vous manquez.
Votre problème a été résolu?
Non.. 🙁 je veux accéder au CallManager de l'instance afin que je puisse l'analyser à travers la Classe et de la portée GSMConnection pour obtenir l'appel de déconnexion d'état.Depuis tous thse internes de l'api, je suis en train d'essayer avec Java Refletion.
OriginalL'auteur Tanmay Mandal