【问题标题】:Android: How to get the configured email account address programmaticallyAndroid:如何以编程方式获取配置的电子邮件帐户地址
【发布时间】:2013-10-27 06:29:34
【问题描述】:

我使用下面的代码来获取配置的账户名

Account[] accounts = AccountManager.get(this).getAccounts();
        for (Account account : accounts) {

        Log.d("Account", "Name " + account.name);

        }

但我需要配置的Microsoft Exchange 帐户电子邮件ID,因为我们可以更改帐户的名称(它不需要是唯一的)。

提前致谢

【问题讨论】:

    标签: android email account email-client accountmanager


    【解决方案1】:

    这段代码可以正常工作

    public class RegisteredEmailAccounts extends Activity
    {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        setContentView(R.layout.registered_email_account);
        final TextView accountsData = (TextView) findViewById(R.id.accounts);
    
          String possibleEmail="";
    
           try{
                   possibleEmail += "************* Get Registered Gmail Account 
                                      *************\n\n";
                   Account[] accounts =  
               AccountManager.get(this).getAccountsByType("com.google");
    
                   for (Account account : accounts) {
    
                     possibleEmail += " --> "+account.name+" : "+account.type+" , \n";
                     possibleEmail += " \n\n";
    
                   }
              }
              catch(Exception e)
              {
                   Log.i("Exception", "Exception:"+e) ; 
              }
    
    
              try{
                   possibleEmail += "**************** Get All Registered Accounts 
                          *****************\n\n";
    
                   Account[] accounts = AccountManager.get(this).getAccounts();
                   for (Account account : accounts) {
    
                      possibleEmail += " --> "+account.name+" : "+account.type+" , \n";
                      possibleEmail += " \n";
    
                   }
              }
              catch(Exception e)
              {
                   Log.i("Exception", "Exception:"+e) ; 
              }
    
           // Show on screen    
           accountsData.setText(possibleEmail);
    
           Log.i("Exception", "mails:"+possibleEmail) ;
         }
    }
    

    【讨论】:

    【解决方案2】:
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_splash);
    
    
        String gmail = null;
    
        Pattern gmailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
        Account[] accounts = AccountManager.get(this).getAccounts();
        for (Account account : accounts) {
            if (gmailPattern.matcher(account.name).matches()) {
                 gmail = account.name;
            }
        }
    
        Toast.makeText(this, gmail, Toast.LENGTH_LONG).show();
    
    }
    

    【讨论】:

    • 这段代码在 api 24 下完美运行 .. 但在 api 24 之上 google 帐户无法使用 .. 我已经获得了帐户权限。你知道如何获取api 24以上的google账号吗?
    • @ShivJalkote 你得到这个解决方案了吗
    • @ShivJalkote 是的,你是对的,我也是。我还想知道如何在 24 位以上的 api 上获取电子邮件。Rashid Ali 有什么想法或链接吗?谢谢!
    • @MarkDelphi 需要检查,我会尽快回复您。
    【解决方案3】:

    我认为这段代码对你有帮助,亲爱的。

    这是我的代码:

    AccountManager accManager = AccountManager.get(context);
    Account acc[] = accManager.getAccounts();
    int accCount = acc.length;
    AppConstants.accOnDevice = new Vector<String>();
    for(int i = 0; i < accCount; i++){
    //Do your task here...
    }
    
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    

    【讨论】:

    • 这不适用于允许 Microsoft 交换帐户的本机电子邮件应用程序。本机电子邮件应用程序允许用户更改名称
    • 可能这段代码对你有用....... Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("消息/rfc822"); PackageManager pkgManager = context.getPackageManager(); List 活动 = pkgManager.queryIntentActivities(intent, 0);
    • 这对获取电子邮件 ID 有什么用处?
    【解决方案4】:

    试试这个代码,肯定对你有用

    AccountManager accManager = AccountManager.get(getApplicationContext());
    Account acc[] = accManager.getAccountsByType("com.google");
    int accCount = acc.length;
    
    for(int i = 0; i < accCount; i++)
    {
        //Do your task here...            
        Toast.makeText(getApplicationContext(),acc[i].name,Toast.LENGTH_SHORT).show();
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-20
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 2011-02-03
      • 2018-03-06
      • 1970-01-01
      相关资源
      最近更新 更多