[英]java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session
[英]issue with getDefaultInstance and javax.mail.Session, java.io.InputStream
我一直在尋找這兩個錯誤的答案,但沒有找到解決方案。
Cannot resolve method 'getDefaultInstance' in 'Session'
'MimeMessage(javax.mail.Session, java.io.InputStream)' in 'javax.mail.internet.MimeMessage' cannot be applied to '(android.se.omapi.Session, android.net.Uri)'
我是否缺少有關使用該軟件包的內容?
public void getBodySignature(Uri uri) throws Exception {
Properties properties = System.getProperties();
Session session = Session.getDefaultInstance(properties, null);
MimeMessage msg = new MimeMessage(session, uri);
SMIMESigned signedMessage;
// multipart/signed message
// two parts- one part for the content that was signed and one part for the actual signature.
if (msg.isMimeType("multipart/signed")) {
signedMessage = new SMIMESigned((MimeMultipart) msg.getContent());
} else if (msg.isMimeType("text/plain") || msg.isMimeType("application/pkcs7-signature")) {
// in this case the content is wrapped in the signature block.
signedMessage = new SMIMESigned(msg);
} else {
throw new IllegalArgumentException("Not a signed message!");
}
您的Session
導入是錯誤的。 將android.se.omapi.Session
的導入替換為javax.mail.Session
。 如果這會導致其他問題,因為您需要兩個導入,那么對於其中一個,您可以使用完全限定名稱。 例如:
javax.mail.Session session = javax.mail.Session.getDefaultInstance(properties, null);
另一個問題是Uri
論點。 沒有接受URI
或Uri
參數的MimeMessage
構造函數。 我假設您有一個現有的消息作為文件並希望從中讀取。 您需要將Uri
轉換為InputStream
。 我在https://developer.android.com/reference/android/net/Uri中找不到任何相關內容。 我會看看你是否可以完全擺脫Uri
參數並將其替換為InputStream
或可以轉換為InputStream
的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.