Я работаю над приложением для оповещения имени вызывающего абонента, для этого приложения я сохранил контакт в локальном хранилище и получаю значение контакта в массиве.Почему я это делаю, потому что, когда кто-то звонит мне, нужно время, чтобы найти контакт.Поэтому мой старший предлагает мне хранить его в локальном хранилище, и когда он получает вызов, он находит его в локальном хранилище, поэтому он работает быстро, а затем рано.Для этого я сделал этот код, пожалуйста, помогите мне, если это возможно.
Я использую этот плагин: контакты
declare var window: any;
setContacts() {
const options = new ContactFindOptions();
options.filter = "";
options.multiple = true;
options.hasPhoneNumber = true;
this.contact.find(['*'], options).then((contacts) => {
this.ArrayData = contacts;
this.storage.set("mycontactsdata", this.ArrayData);
console.log("stringify contact all", JSON.stringify(this.ArrayData));
});
var testobj = JSON.stringify(this.ArrayData);
localStorage.setItem("testobjdata", testobj);
}
phonecalls() {
if (window.PhoneCallTrap) {
window.PhoneCallTrap.onCall((obj) => {
var callObj = JSON.parse(obj),
state = callObj.state,
callingNumber = callObj.incomingNumber;
if (callingNumber > 0) {
var resultdata = localStorage.getItem("testobjdata");
if (resultdata) {
this.ArrayData1 = JSON.parse(resultdata);
}
this.ArrayData1.forEach(function (item) {
console.log(item.displayName);
if (item._objectInstance.phoneNumbers[0] == callingNumber) {
console.log("found");
this.contactsfoundcallingNumber = item._objectInstance.displayName;
console.log(this.contactsfoundcallingNumber);
}
});
}
});
}
}
Структура значения в локальном хранилище
[
{ "_objectInstance":
{
"id": "1",
"rawId": null,
"displayName": "Test contact name",
"name": {
"familyName": "Test",
"givenName": "Test",
"middleName": "Test",
"formatted": "Test Test Test"
},
"nickname": null,
"phoneNumbers": [
{
"id": "56",
"pref": false,
"value": "+91 xxxxx xxxxx",
"type": "mobile"
},
{
"id": "192394",
"pref": false,
"value": "+91xxxxxxxxxx",
"type": "mobile"
},
{
"id": "201516",
"pref": false,
"value": "+91 xxxxx xxxxx",
"type": "mobile"
}
],
"emails": null,
"addresses": null,
"ims": null,
"organizations": null,
"birthday": "xxxx-xx-xxT18:30:00.000Z",
"note": null,
"photos": [
{
"id": "193840",
"pref": false,
"type": "url",
"value": "content://com.android.contacts/contacts/1/photo"
}
],
"categories": null,
"urls": null
}, "rawId": "8"
},
]
когда я использую отладчик и инспектирую в chrome, инспектирую с помощью отладки USB, я получаю эту ошибку и элемент, используемый в функции forEach.
message: "item is not defined"
stack: "ReferenceError: item is not defined↵ at eval (eval at <anonymous> (http://localhost/pages-home-home-module.js:411:21), <anonymous>:1:1)↵ at http://localhost/pages-home-home-module.js:411:21↵ at Object.callbackFromNative (http://localhost/cordova.js:291:58)↵ at <anonymous>:1:9"
__proto__: Error