2016-08-10 2 views
-2

Этого код, чтобы получить учетную запись с мобильного телефона в приложенииэтого код рейз время выполнения исключение

package com.example.lenovo.email; 

import android.accounts.Account; 
import android.accounts.AccountManager; 
import android.content.Context; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.util.Patterns; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.Spinner; 

import java.util.regex.Pattern; 

public class MainActivity extends AppCompatActivity { 
    private static String[] userEmailId = null; 
    private static String mDeviceId = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Spinner dropdown = (Spinner)findViewById(R.id.spinner); 

     String[] email_a=null; 
     email_a=setUserEmailId(this); 
     if(email_a == null) 
     { 
      throw new RuntimeException("null"); 
     } 
     else { 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, email_a); 
      dropdown.setAdapter(adapter); 
      EditText edit = (EditText) findViewById(R.id.editText2); 
      // edit.setText(setUserEmailId(this)); 
     } 

    } 
    //used to get accounts in dropdown list 
    private static String[] setUserEmailId(Context mContext) { 
     Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+ 
     Account[] accounts = AccountManager.get(mContext).getAccounts(); 
int i=0; 
     for (Account account : accounts) { 
      if (emailPattern.matcher(account.name).matches()) { 
       userEmailId[i] = account.name; 
       Log.d("Email",userEmailId[i]); 
       i++; 
      } 
     } 

     return userEmailId; 
    } 

} 

код дает запустить исключение времени.
Когда я запускаю этот код, к сожалению приложение было остановлено.
Я не могу разрешить это исключение .....

+0

Добро пожаловать на ТАК! Вы должны отредактировать свой вопрос в соответствии со следующими условиями: http://stackoverflow.com/help/how-to-ask – Shaishav

+0

Вы также должны указать данные логарифма, задавая вопросы о сбоях –

+0

, пожалуйста, поделитесь своим логарифмом – SaravInfern

ответ

1

Проблема в том, вы не инициализирован userEmailId должным образом, это еще null, когда вы пытаетесь добавить элементы к нему.

Я предлагаю вам использовать ArrayList вместо String массива:

private List<String> getUserEmailId(Context context) { 
    List<String> list = new ArrayList<>(); 

    Pattern emailPattern = Patterns.EMAIL_ADDRESS; 
    Account[] accounts = AccountManager.get(context).getAccounts(); 

    for (Account account : accounts) { 
     if (emailPattern.matcher(account.name).matches()) { 
      list.add(account.name); 
     } 
    } 

    return list; 
} 
0

Почему вы используете RuntimeException без решения? Я имею в виду, что вам нужно поймать исключение, а затем сделать что-то с ним :)

0 думаю, setUserEmailId способ возврат не принимается. Пусть проверяет логику кода, пытаясь найти электронную почту. Нужно использовать LogCat когда вы не нашли электронную почту, RuntimeException является основной причиной, чтобы заставить приложение остановки :)

if(email_a == null){ 
    throw new RuntimeException("null"); 
}