【问题标题】:Opening a native settings menu page programmatically in NativeScript在 NativeScript 中以编程方式打开本机设置菜单页面
【发布时间】:2020-03-12 12:22:20
【问题描述】:

如何使用 NativeScript 以编程方式从原生 Android 设置菜单打开页面? 经典的 java 示例表明它可以通过这种方式完成:

Intent intent = new Intent(Settings.ACTION_SETTINGS);
startActivity(intent);

但是如何在 NativeScript 中做同样的事情呢?

【问题讨论】:

    标签: android android-intent android-activity nativescript settings


    【解决方案1】:

    这可以使用模块tns-core-modules/application 来实现,这将使startActivity 可用。下面提供了一个使用 TypeScript 的示例:

    import * as appM from 'tns-core-modules/application';
    
    const intent = new android.content.Intent(android.provider.Settings.ACTION_SETTINGS);
    const activity = appM.android.foregroundActivity || appM.android.startActivity;
    activity.startActivityForResult(intent, 0);
    

    不幸的是,foregroundActivitystartActivity 不包括 TypeScript 类型,这使得找到解决方案变得非常困难。 非常感谢 user10655801 提供包含该解决方案的测试存储库。

    【讨论】:

    • 原生 API 的输入非常庞大,并不是每个人都需要它。所以它是可选的,你必须安装tns-platform-declarations 插件才能使用它们。
    • @Manoj 事实上,我已经安装了插件tns-platform-declarations。我的意思是foregroundActivitystartActivity 都被定义为any,所以很难理解必须从它们那里调用startActivityForResult。我将编辑答案以使其更清楚。
    • 澄清一下,如果没有(可选)插件,就不可能将类型定义为 Activity。虽然在相同声明的 cmets 中提到了该类型。
    • 你的第一句话是什么意思?我说我确实安装了插件并且可以正常工作,还是您指的是另一个插件?我仍然不明白为什么appM.android 存在类型,但appM.android.startActivity 的方法却不存在。
    猜你喜欢
    • 2016-12-17
    • 2021-07-12
    • 2016-09-20
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    相关资源
    最近更新 更多