我正在使用德尔福10西雅图开发android移动应用程序,我有获得设备电子邮件ID的要求。为此,我尝试使用以下示例获取手机的电子邮件地址。但是当我尝试接口(JAccountClass、JAccount、JAccountManagerClass)时,它会询问其他一些接口-JActivity、JAccountManagerCallback和JAccountManagerFuture。请帮我找到这些依赖类。我在哪能拿到这些文件。
为了避免该存储库中代码的变幻莫测和错误,这里有一个在Delphi10Seattle中工作的单元。
请注意,指定的帐户类型可以注册多个帐户,这就是为什么此代码返回它们的数组。
unit AccountEmailsU;
interface
function GetAccountEmails(const AccountType: String): TArray<String>;
implementation
uses
Androidapi.Helpers,
Androidapi.Jni,
{$IF Declared(RTLVersion) and (RTLVersion >= 31)}
// Delphi 10.1 Berlin adds in full imports for the accounts classes
Androidapi.JNI.Accounts;
{$ELSE}
Androidapi.JNIBridge,
Androidapi.JNI.App,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes,
Androidapi.JNI.Os;
type
// ===== Forward declarations =====
JAccount = interface;//android.accounts.Account
JAccountManager = interface;//android.accounts.AccountManager
// ===== Interface declarations =====
JAccountClass = interface(JObjectClass)
['{94EE6861-F326-489F-8919-E20B39E3D9C1}']
end;
[JavaSignature('android/accounts/Account')]
JAccount = interface(JObject)
['{71476381-8B6E-471F-9189-9857ECD7508C}']
function _Getname: JString; cdecl;
function _Gettype: JString; cdecl;
property name: JString read _Getname;
property &type: JString read _Gettype;
end;
TJAccount = class(TJavaGenericImport<JAccountClass, JAccount>) end;
JAccountManagerClass = interface(JObjectClass)
['{96273844-2D84-47F0-BFD5-14B73402F843}']
{class} function &get(context: JContext): JAccountManager; cdecl;
end;
[JavaSignature('android/accounts/AccountManager')]
JAccountManager = interface(JObject)
['{9FA4077B-4628-433C-BAFC-9EB299DA9C98}']
function getAccountsByType(type_: JString): TJavaObjectArray<JAccount>; cdecl;
end;
TJAccountManager = class(TJavaGenericImport<JAccountManagerClass, JAccountManager>) end;
{$ENDIF}
function GetAccountEmails(const AccountType: String): TArray<String>;
var
AccountManager: JAccountManager;
Accounts: TJavaObjectArray<JAccount>;
Account: JAccount;
AccountLoopCounter: Integer;
begin
{$IF RTLVersion >= 30}
AccountManager := TJAccountManager.JavaClass.get(TAndroidHelper.Context);
{$ELSE}
AccountManager := TJAccountManager.JavaClass.get(SharedActivityContext);
{$ENDIF}
if AccountManager <> nil then
begin
Accounts := AccountManager.getAccountsByType(StringToJString(AccountType));
if Accounts <> nil then
begin
SetLength(Result, Accounts.Length);
for AccountLoopCounter := 0 to Pred(Accounts.Length) do
begin
//Account := Accounts.Items[AccountLoopCounter];
Account := TJAccount.Wrap(Accounts.GetRawItem(AccountLoopCounter));
Result[AccountLoopCounter] := JStringtoString(Account.name);
end
end;
end;
end;
procedure RegisterTypes;
begin
TRegTypes.RegisterType('AccountEmailsU.JAccount', TypeInfo(AccountEmailsU.JAccount));
TRegTypes.RegisterType('AccountEmailsU.JAccountManager', TypeInfo(AccountEmailsU.JAccountManager));
end;
initialization
RegisterTypes;
end.
使用 Java 发送电子邮件,我如何让名称打印在电子邮件地址旁边,最好是这种样式? 我把我的电子邮件列表放在a *里了。包含如下数据的属性文件: 我正在使用此函数将属性文件中的每个电子邮件列表(如“email_list_3”)作为数组列表返回: private static ArrayList sete mail list(String email _ list _ name)抛出异常{ Prop
我在我的系统中使用谷歌广告API PHP库。但是我没有在这里提供的API列表中找到以下2个APIhttps://developers.google.com/google-ads/api/docs/account-management/create-account: API,以查明用户是否已经存在使用电子邮件的谷歌广告帐户?如果找到,则返回其10位数的客户ID。 我在几个网站上见过同样的过程。每当用
问题内容: 当前,当我使用JavaMail时,如果我习惯将消息分解成其单独的部分,还将显示发件人的姓名。这可能是一个简单的问题,但是您如何做到这一点,因此仅返回电子邮件地址。抱歉,这是一个简单的问题,但我似乎找不到答案。 问题答案: 事实证明,该地址已经为您解析。由于JavaMail愚蠢的额外抽象层,它会将对象作为其超类返回。 对象几乎没有用。您需要将它们放回原处,然后仅获得电子邮件部分:
我已经向几个朋友发布了Android应用的测试版。现在,我想修复测试期间出现的一些错误。 我设置了一个第三方崩溃报告工具,所以我可以轻松处理应用程序崩溃。然而,有一些错误的行为并没有导致崩溃。在这些情况下,我会检查应用程序日志,看看哪里出错了。 应用程序有办法通过电子邮件发送其logcat条目吗? 有许多日志应用程序(android日志收集器、日志查看器(logcat))可以检查和显示logcat
问题内容: 我试图直接在单击按钮时打开Gmail的电子邮件发送表单,但这总是显示用于发送电子邮件的选项列表。 我这样做是为了打开GMail表单: 但这不是打开GMail表单。我应该怎么做才能打开GMail表单,请帮忙。 有什么办法吗? 问题答案: 在线路上使用一些东西
我一直试图获取电子邮件正文与imap_fetchbody($stream,$msgno,$选项),但没有成功。 然后我尝试使用imap_fetchstructure($stream,$msgno),并使用各自的子类型手动解码每种类型,如:- 对于前两个,我可以用这样的东西来解码 但说到混合,我要么不知道,要么我该怎么办,要么我在哪里犯错。