sms - nativescript-phone 阻止 Nativescript-contacts 返回
问题描述
我有一个应用程序,我想从联系人中选择一个人,然后向那个人发送文本。对于第一个用户,它按预期工作,但在此之后,应用程序在选择联系人后永远不会获得控制权。我已将问题隔离到 Nativescript-phone 插件。如果只是调用phone.sms() 发送文本,然后调用contacts.getContact(),就会出现问题。我在 Android 和 iOS 上都看到了这一点。
我在https://github.com/dlcole/contactTester创建了一个示例应用程序来演示该问题。示例应用程序仅适用于 Android。我已经花了几天时间,欢迎任何见解。
2020 年 4 月 21 日编辑:
我在这方面花了更多时间,可以看到发生了什么。两个插件具有相同的事件处理程序和相同的请求代码:
本机脚本电话:
var SEND_SMS = 1001;
activity.onActivityResult = function(requestCode, resultCode, data) {
本机脚本联系人:
var PICK_CONTACT = 1001;
appModule.android.on("activityResult", function(eventData) {
发生的情况是,在调用 phone.sms 之后,调用 contacts.getContact 会导致控制权返回到电话插件,而不是联系人插件。我尝试将手机的请求代码更改为 1002,但结果相同。
因此,下一步是确定如何避免事件处理程序的冲突。
解决方案
activityResult
nativescript-phone 插件不使用事件,而是覆盖默认的活动结果回调。
一种解决方法是在使用 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;
})
})
}
推荐阅读
- gitlab - 由于 CAfile,ReadTheDocs 无法克隆
- rpc - 如何在不使用任何 API 的情况下在 Java 中设计异步/延迟同步 RPC?
- c++ - 从函数返回后,什么会导致 C++ 对象的类型信息发生变化?
- ios - Xamarin iOS VPN 应用程序扩展未启动数据包隧道提供程序类
- ruby-on-rails - 将 `if` 条件添加到 ActiveAdmin batch_batch 销毁操作,否则使用默认操作行为
- android - 如何使用 GridView 优化我的代码?- 颤振
- python - 如何在 Python 数据框中的特定模式之前提取某个字母 n#s?
- vector - 有没有简单的方法来计算生锈矢量的百分比变化?
- export-to-csv - 在 excel 中打开时,角度导出到 csv 不会将 unixtimestamp 值转换为日期
- oracle - HIbernate 5、Oracle 和本机查询 - 从 H4 升级时的破坏行为?