【问题标题】:How can I open settings from my app in android with Titanium?如何使用 Titanium 在 android 中打开我的应用程序的设置?
【发布时间】:2016-07-06 17:34:43
【问题描述】:
【问题讨论】:
标签:
android
titanium
appcelerator-titanium
【解决方案1】:
正如你提到的,要使用的代码如下:
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);
活动是此处指定的值: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
【解决方案2】:
我发现问题是因为我使用了不正确的活动,我在其他 .js 文件中作为助手使用了该功能。因为这条线我才意识到:
// Get a reference to this activity (current activity)
Ti.Android.currentActivity.startActivity(intent);
所以它指向当前的活动(这实际上不是一个真实的活动),这就是为什么它从未打开设置,所以我做了什么:
我将当前活动作为参数传递
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);
}