2017-07-15 46 views
1

权限进入清单没有得到主电子邮件ID在Android项目

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

我的XML

<TextView 
    android:id="@+id/tv_id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" /> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 
private FirebaseAnalytics firebaseAnalytics; 
ImageView GoToNewActivity; 
ImageView GoToNewActivity1; 
TextView tvID; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    tvID = (TextView) findViewById(R.id.tv_id); 

    String email = getEmiailID(this); 
    if(email != null) { 
     tvID.setText(email); 
    } else { 
     tvID.setText("Account haven't been found"); 
    } 
private String getEmiailID(Context context) { 
    AccountManager accountManager = AccountManager.get(context); 
    Account account = getAccount(accountManager); 
    if (account == null) { 
     return null; 
    } else { 
     return account.name; 
    } 
} 

private static Account getAccount(AccountManager accountManager) { 
    Account[] accounts = accountManager.getAccountsByType("com.google"); 
    Account account; 
    if (accounts.length > 0) { 
     account = accounts[0]; 
    } else { 
     account = null; 
    } 
    return account; 
    } 

} 

据印户口也没有发现,意味着没有获得主要电子邮我在我的Android设备中有我的主要电子邮件。我的代码错了吗?

回答

0

试试这个 添加此许可我的朋友

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 

代码上创建方法

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 
    TextView tvID = (TextView) findViewById(R.id.tv); 
    String email = getEmiailID(this); 

    if (email != null) { 
     tvID.setText(email); 
    } else { 
     tvID.setText("Account haven't been found"); 
    } 
} 

创建此方法

private String getEmiailID(Context context) { 
    AccountManager accountManager = AccountManager.get(context); 
    Account account = getAccount(accountManager); 
    if (account == null) { 
     return null; 
    } else { 
     return account.name; 
    } 
} 

private Account getAccount(AccountManager accountManager) { 
    if (ActivityCompat.checkSelfPermission(Main2Activity.this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     // ActivityCompat#requestPermissions 
     // here to request the missing permissions, and then overriding 
     // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
     //           int[] grantResults) 
     // to handle the case where the user grants the permission. See the documentation 
     // for ActivityCompat#requestPermissions for more details. 
     return null; 
    } 
    Account[] accounts = accountManager.getAccountsByType("com.google"); 
    Account account; 
    if (accounts.length > 0) { 
     account = accounts[0]; 
    } else { 
     account = null; 
    } 
    return account; 
} 
+0

它给错误无法解析符号背景 –

+0

@GauravMehra通过YourActivity.this作为上下文我的朋友 –

+0

其打印打招呼主音,不打印电子邮件 –

0

AccountManager

这个类提供访问用户的 在线帐户的集中注册。

权限

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 

确保您启用Android's Runtime Permission

采用Android 6.0(API级别23)开始,如果一个应用程序共享,管理的帐户认证的 签名,它不 需要“GET_ACCOUNTS”读取权限有关的账户信息。 在Android 5.1及更低版本上,所有应用程序都需要“GET_ACCOUNTS”权限才能阅读关于任何帐户的信息,其中有 。

try 
    { 
      AccountManager accountManager = AccountManager.get(MainActivity.this); 
      if (accountManager == null) 
      { 
      return ""; 
      } 
      else 
      { 
       Account[] accounts = accountManager.getAccounts(); 
       Pattern emailPatternOBJ = Patterns.EMAIL_ADDRESS; // API level 8+ 
       for (Account account : accounts) 
       { 

        if (emailPatternOBJ.matcher(account.name).matches()) 
        { 
         System.out.println("Primary_Mail_ID"+account.name); // Return Primary Email ID . 
         return account.name; 
        } 
       } 
       return ""; 

      } 
      catch (SecurityException e) 
      { 
      // If app doesn't have GET_ACCOUNTS permission 
      return ""; 

      } 

    } 
相关问题