Плагин Phonegap (Версия>=3.0) для получения зарегистрированного адреса электронной почты устройства Android

Мне нужно получить зарегистрированную электронную почту устройства Android в моем приложении Cordova. В настоящее время у меня работает приложение Cordova 3.3.0; и я мог только найти плагин Cordova для версии 2.5 в этом месте. Этот плагин не совместим с версией, которую я сейчас использую. Кто-нибудь предоставил обновленный плагин для этого?

Как обновить этот плагин, который построен для 2.5, чтобы сделать его совместимым с 3.3.0?

Плагин действительно требует разрешения от android.permission.GET_ACCOUNTS

ОБНОВЛЕНИЕ: я сделал следующее к файлу AccountList.java

package com.seltzlab.mobile;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Context;

import org.apache.cordova.*;

import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CordovaWebView;
import org.apache.cordova.PluginResult;

public class AccountList extends CordovaPlugin {

private Context ctx;

public PluginResult execute(String action, JSONArray args, String callbackId) {
try {
JSONObject obj = args.getJSONObject(0);
AccountManager am = AccountManager.get(this.ctx);
Account[] accounts;
if (obj.has("type"))
accounts = am.getAccountsByType(obj.getString("type"));
else
accounts = am.getAccounts();
JSONArray res = new JSONArray();
for (int i = 0; i < accounts.length; i++) {
Account a = accounts[i];
res.put(a.name);
}
return new PluginResult(PluginResult.Status.OK, res);
} catch (JSONException e) {
return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
}
}
}

где оригинал -

package com.seltzlab.mobile;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.accounts.Account;
import android.accounts.AccountManager;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;

public class AccountList extends Plugin {   

@Override   public PluginResult execute(String action, JSONArray args, String callbackId)
 {      
try {           
JSONObject obj = args.getJSONObject(0);         
AccountManager am = AccountManager.get(this.ctx);           
Account[] accounts;         
if (obj.has("type"))                
accounts = am.getAccountsByType(obj.getString("type"));         
else                
accounts = am.getAccounts();            
JSONArray res = new JSONArray();            
for (int i = 0; i < accounts.length; i++) {             
Account a = accounts[i];                
res.put(a.name);            
}           
return new PluginResult(PluginResult.Status.OK, res);       
} 
catch (JSONException e) {           
return new PluginResult(PluginResult.Status.JSON_EXCEPTION);        
}   
}}

и мой скрипт в файле HTML выглядит следующим образом -

  <script type="text/javascript" charset="utf-8" src="accountlist.js"></script>

        <script type="text/javascript" charset="utf-8">
        function getAccs(){
        alert("get the Accounts function starts")

        cordova.define("com.seltzlab.mobile.AccountList")

        window.plugins.AccountList.get(
                {
                    type: 'gmail' // if not specified get all accounts
                }, 
                function (result) {
                    alert(res.length);
            for (i in res)
                alert(res[i]);
                },
                function (error) {
                    alert(error);
                }
            );

        }
        </script>

Я получаю сообщение о том, что AccountList не определен.

1 ответ

Попробуйте подключить плагин Cordova для получения зарегистрированного адреса электронной почты с вашего устройства Android.

https://github.com/apache/cordova-plugin-contacts

пример

function onSuccess(contacts) {
    alert('Found ' + navigator.contacts.length + ' navigator.contacts.');
};

function onError(contactError) {
    alert('onError!');
};

// find all contacts with 'Bob' in any name field
var options      = new ContactFindOptions();
options.filter   = "Bob";
options.multiple = true;
var fields       = ["displayName", "name","email"];
navigator.contacts.find(fields, onSuccess, onError, options);
Другие вопросы по тегам