nativescript-phone 阻止 Nativescript-contacts 返回
nativescript-phone prevents Nativescript-contacts from returning
我有一个应用程序,我想 select 联系人中的某个人,然后向该人发送文本。对于第一个用户,它按预期工作,但此后应用程序在联系人被 selected 后再也没有收到控制权。我已将问题隔离到 Nativescript-phone 插件。如果您只是简单地调用 phone.sms() 发送文本,然后调用 contacts.getContact(),就会出现问题。我在 Android 和 iOS 上都看到了这一点。
我创建了一个示例应用程序来演示 https://github.com/dlcole/contactTester 上的问题。示例应用仅 Android。我在这上面花了几天时间,欢迎任何见解。
2020 年 4 月 21 日编辑:
我在这上面花了更多时间,可以看到发生了什么。两个插件具有相同的事件处理程序和相同的请求代码:
nativescript-phone:
var SEND_SMS = 1001;
activity.onActivityResult = function(requestCode, resultCode, data) {
nativescript-联系人:
var PICK_CONTACT = 1001;
appModule.android.on("activityResult", function(eventData) {
调用 phone.sms 后发生的情况是,调用 contacts.getContact 导致控制 return 到 phone 插件,而不是联系人插件。我尝试将 phone 的请求代码更改为 1002,但结果相同。
因此,下一步是确定如何避免事件处理程序的冲突。
nativescript-phone 插件不使用 activityResult
事件,而是覆盖默认的 activity 结果回调。
解决方法是在完成 nativescript-phone.
后将回调设置为其原始值
exports.sendText = function (args) {
console.log("entering sendText");
const activity = appModule.android.foregroundActivity || appModule.android.startActivity;
const onActivityResult = activity.onActivityResult;
permissions.requestPermissions([android.Manifest.permission.CALL_PHONE],
"Permission needed to send text")
.then(() => {
console.log("permission granted");
phone.sms()
.then((result) => {
console.log(JSON.stringify(result, null, 4));
activity.onActivityResult = onActivityResult;
})
})
}
我有一个应用程序,我想 select 联系人中的某个人,然后向该人发送文本。对于第一个用户,它按预期工作,但此后应用程序在联系人被 selected 后再也没有收到控制权。我已将问题隔离到 Nativescript-phone 插件。如果您只是简单地调用 phone.sms() 发送文本,然后调用 contacts.getContact(),就会出现问题。我在 Android 和 iOS 上都看到了这一点。
我创建了一个示例应用程序来演示 https://github.com/dlcole/contactTester 上的问题。示例应用仅 Android。我在这上面花了几天时间,欢迎任何见解。
2020 年 4 月 21 日编辑:
我在这上面花了更多时间,可以看到发生了什么。两个插件具有相同的事件处理程序和相同的请求代码:
nativescript-phone:
var SEND_SMS = 1001;
activity.onActivityResult = function(requestCode, resultCode, data) {
nativescript-联系人:
var PICK_CONTACT = 1001;
appModule.android.on("activityResult", function(eventData) {
调用 phone.sms 后发生的情况是,调用 contacts.getContact 导致控制 return 到 phone 插件,而不是联系人插件。我尝试将 phone 的请求代码更改为 1002,但结果相同。
因此,下一步是确定如何避免事件处理程序的冲突。
nativescript-phone 插件不使用 activityResult
事件,而是覆盖默认的 activity 结果回调。
解决方法是在完成 nativescript-phone.
后将回调设置为其原始值exports.sendText = function (args) {
console.log("entering sendText");
const activity = appModule.android.foregroundActivity || appModule.android.startActivity;
const onActivityResult = activity.onActivityResult;
permissions.requestPermissions([android.Manifest.permission.CALL_PHONE],
"Permission needed to send text")
.then(() => {
console.log("permission granted");
phone.sms()
.then((result) => {
console.log(JSON.stringify(result, null, 4));
activity.onActivityResult = onActivityResult;
})
})
}