gpt4 book ai didi

android - 获取android中的帐户列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:35:28 24 4
gpt4 key购买 nike

我正在开发一个应用程序,我需要在其中查看用户手机中的帐户列表。我已经使用了这段代码,它似乎运行良好。我面临的唯一问题是我想获取帐户列表而不仅仅是一个,那么如何实现呢?我很确定需要一个 ListView ,但我不知道如何在这里使用它。

代码:

package com.example.root.accountspermission;

import android.Manifest;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Patterns;
import android.widget.TextView;
import android.widget.Toast;

import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {

public static final int PERMS_REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.GET_ACCOUNTS)) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMS_REQUEST_CODE);
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMS_REQUEST_CODE);
}
} else {
//do some stuff
String email = null;

Pattern gmailPattern = Patterns.EMAIL_ADDRESS;
Account[] accounts = AccountManager.get(this).getAccounts();
for (Account account : accounts) {
if (gmailPattern.matcher(account.name).matches()) {
email = account.name;
}
}

TextView viewEmail = (TextView) findViewById(R.id.email_address_view);
viewEmail.setText("Email From Device: " + email);
Toast.makeText(this, "Android Device Registered Email Address: " + email, Toast.LENGTH_LONG).show();
}

}
}

如有任何帮助,我们将不胜感激。

UPDATE:

感谢您的回答“AndiGeeky”。我能够稍微修改一下代码,看看:

import android.Manifest;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Patterns;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {

private ListView lv;
public static final int PERMS_REQUEST_CODE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.GET_ACCOUNTS)) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMS_REQUEST_CODE);
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMS_REQUEST_CODE);
}
} else {
//do some stuff
lv = (ListView) findViewById(R.id.accountsList);
List<String> emails = new ArrayList<String>();

Pattern gmailPattern = Patterns.EMAIL_ADDRESS;
Account[] accounts = AccountManager.get(this).getAccounts();
for (Account account : accounts) {
if (gmailPattern.matcher(account.name).matches()) {
emails.add(account.name);
}
}

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,android.R.id.text1,emails);
lv.setAdapter(adapter);
//TextView viewEmail = (TextView) findViewById(R.id.email_address_view);
//viewEmail.setText("Email From Device: " + emails.size());
Toast.makeText(this, "Android Device Registered Email Address: " + emails.size(), Toast.LENGTH_LONG).show();
}
}
}

我能够在 ListView 中打印所有帐户。

XML 代码:

<ListView
android:id="@+id/accountsList"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />

最佳答案

如下更改您的实现:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.GET_ACCOUNTS)) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMS_REQUEST_CODE);
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.GET_ACCOUNTS}, PERMS_REQUEST_CODE);
}
} else {
//do some stuff
ArrayList<String> emails = new ArrayList<>();

Pattern gmailPattern = Patterns.EMAIL_ADDRESS;
Account[] accounts = AccountManager.get(this).getAccounts();
for (Account account : accounts) {
if (gmailPattern.matcher(account.name).matches()) {
emails.add(account.name);
}
}

TextView viewEmail = (TextView) findViewById(R.id.email_address_view);
viewEmail.setText("Email From Device: " + emails.size());
Toast.makeText(this, "Android Device Registered Email Address: " + emails.get(0), Toast
.LENGTH_LONG).show();
}
}
}

您的代码:

这里您的代码只是循环遍历用户帐户,当它遵循提到的模式时,只需将该帐户存储到 string 并保留其他帐户!

编辑代码

我刚刚将遵循代码中提到的模式的所有用户帐户存储在列表中。

谢谢!

关于android - 获取android中的帐户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42918731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com