Ich habe die Klasse SmsCbMessage.java in meinem Programm verwendet. Es wurde von Ссылка Folgendes ist mein Programm.
%Vor%Dies wird ohne Fehler kompiliert. Aber beim Ausführen gibt es folgenden Fehler
%Vor%Wie löst man das?
Nicht, dass ich bei der Verwendung dieser SmsCbMessage.java-Klasse auch alle erforderlichen abhängigen Klassen einbezogen hätte.
Wenn Sie sich den Quellcode von [email protected]
Sie werden sehen, dass die Klasse mit dem "@ hide" Attribut
gekennzeichnet ist %Vor%Dies bedeutet, dass die Klasse ein Implementierungsdetail von Android ist, das nicht Teil der öffentlichen Android-API ist und die ohne vorherige Ankündigung geändert oder entfernt werden kann.
SmsCbMessage @ android .googlesource.com hat die Methode public static SmsCbMessage createFromPdu(byte[] pdu)
während Ihr Codefragment hat es.
Ihr Testgerät hat diese Klasse aber ohne die statische Methode.
Wenn Sie die Klasse trotzdem verwenden möchten, können Sie den Quellcode zu Ihrem Projekt hinzufügen und das Paket umbenennen
[Update 2015-06-25]
Da das Hinzufügen einer Quelle von grepcodes zu einem lokalen Projekt das Problem nicht löst, weil es viele Abhängigkeiten hat (besonders android.internal. *)
Sie können Ihre eigene MySmsCbMessage erstellen, die von der SmsCbMessage-Klasse der Geräte erbt und versuchen, fehlende Funktionen aus grepcodes source hinzuzufügen.
%Vor%Dies ist immer noch ein fragiler Workaround, da Sie nicht sicher sein können, dass andere Geräte SmsCbMessage
haben Es ist wahrscheinlich, dass Huawei die Klasse SmsCbMessage
angepasst hat. Was Sie tun können, ist Reflektion zu verwenden, um zu sehen, welche Methoden in dieser Klasse verfügbar sind, und zu hoffen, dass Sie wie die eine aussehen, die Sie brauchen. Versuchen Sie etwas wie folgt: