如何使用 Titanium 从 android 中的应用打开设置?

How can I open settings from my app in android with Titanium?

以下代码运行良好

var intent = Ti.Android.createIntent({
    action: 'android.settings.APPLICATION_SETTINGS',
});

intent.addFlags(Ti.Android.FLAG_ACTIVITY_NEW_TASK);
Ti.Android.currentActivity.startActivity(intent);

我从应用示例 https://github.com/appcelerator-developer-relations/appc-sample-ti510 中提取了代码。

应用程序是否需要特定权限才能在 android 6.0 中打开设置?

感谢您的帮助。

我发现问题是因为我使用了不正确的 activity,我在其他 .js 文件中有这个函数作为助手。我意识到是因为这条线:

// Get a reference to this activity (current activity)
Ti.Android.currentActivity.startActivity(intent);

所以它指向当前的 activity(这实际上不是真实的),这就是它从未打开设置的原因,所以我做了:

我作为参数传递了我当前的 activity

var activity = Ti.Android.currentActivity;
openSettings(activity);

关于处理打开设置的函数。所以我的功能:

function openSettings(activity) {
    var intent = Ti.Android.createIntent({
        action: 'android.settings.APPLICATION_SETTINGS',
    });

    intent.addFlags(Ti.Android.FLAG_ACTIVITY_NEW_TASK);
    activity.startActivity(intent);
}

如您所述,要使用的代码如下:

var intent = Ti.Android.createIntent({
    action: activity, // e.g. "android.settings.APPLICATION_SETTINGS"
});
intent.addFlags(Ti.Android.FLAG_ACTIVITY_NEW_TASK);
Ti.Android.currentActivity.startActivity(intent);

其中 activity 是此处指定的值:https://developer.android.com/reference/android/provider/Settings.html

此外,如果您想打开应用设置页面,请使用以下代码:

var intent = Ti.Android.createIntent({
    action: "android.settings.APPLICATION_DETAILS_SETTINGS",
    data: "package:com.example.myapp"
});
intent.addFlags(Ti.Android.FLAG_ACTIVITY_NEW_TASK);
Ti.Android.currentActivity.startActivity(intent);

其中 com.example.myapp 是您的应用程序包名称。

如果您希望打开您当前使用的应用的应用设置页面,您可以执行以下操作:

data: "package:" + Ti.App.id