如何创建一个自定义对话框,要求准许在黑莓 [英] how to create a custom dialog for asking permission in blackberry
本文介绍了如何创建一个自定义对话框,要求准许在黑莓的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何创建应用程序描述符请求允许在黑莓和存储自定义对话框。我已经创造了这个code,但我不能够让我们的自定义消息并获得异常未捕获的异常:无应用程序实例
类PermissionTest扩展的UIApplication { 私有静态的String [] = dialogChoice {退出}; 静态布尔permissionsOk = FALSE; //主要方法
公共静态无效的主要(字串[] args){
_assertHasPermissions();
PermissionTest该app =新PermissionTest();
theApp.enterEventDispatcher();
} 公共PermissionTest(){
如果(permissionsOk)
。UiApplication.getUiApplication()pushScreen(新的主屏幕());
其他
。UiApplication.getUiApplication()pushScreen(新PermissionScreen());
} //要求授权
私有静态无效_assertHasPermissions(){ 尝试{
//捕捉权限的当前状态,并检查对
// 要求。
ApplicationPermissionsManager APM = ApplicationPermissionsManager
.getInstance();
ApplicationPermissions原= apm.getApplicationPermissions(); //设置并附加理由提供商
apm.addReasonProvider(
ApplicationDescriptor.currentApplicationDescriptor(),
新ReasonProvider(){
公共字符串的getMessage(int i)以{
弦乐味精=我需要为了权限才能正常工作。
开关(ⅰ){
案例ApplicationPermissions.PERMISSION_LOCATION_API:
味精=所需的基于位置的服务。
打破;
案例ApplicationPermissions.PERMISSION_BROWSER_FILTER:
味精=所需的基于位置的服务。
打破;
案例ApplicationPermissions.PERMISSION_EMAIL:
味精=所需的基于位置的服务。
打破;
}
返回味精;
}
}); 如果(原
.getPermission(ApplicationPermissions.PERMISSION_LOCATION_API)== ApplicationPermissions.VALUE_ALLOW
&功放;&安培;原版的
.getPermission(ApplicationPermissions.PERMISSION_BROWSER_FILTER)== ApplicationPermissions.VALUE_PROMPT
&功放;&安培;原版的
.getPermission(ApplicationPermissions.VALUE_ALLOW)== ApplicationPermissions.VALUE_ALLOW){
permissionsOk = TRUE;
}其他{
//创建为每个权限的许可请求你
//应用
//需求。请注意,您不想列出所有可能的
//许可
//值,因为它提供了应用价值不大
//或用户。
//请只要求需要为您的权限
//应用程序。
ApplicationPermissions permRequest =新ApplicationPermissions();
permRequest
.addPermission(ApplicationPermissions.PERMISSION_LOCATION_API);
permRequest
.addPermission(ApplicationPermissions.PERMISSION_BROWSER_FILTER);
permRequest
.addPermission(ApplicationPermissions.PERMISSION_EMAIL); permissionsOk = apm.invokePermissionsRequest(permRequest);
} / *
*如果(permissionsOk){//什么都不做}其他{//退出
* System.exit(0); }
* /}赶上(例外五){
UiApplication.getUiApplication()的invokeLater(Runnable的新(){
公共无效的run(){
Dialog.ask(
应用程序安装错误,请重新安装应用程序
dialogChoice,0);
}
});
}
}
}
解决方案
您不能,apm.invokePermissionsRequest()始终显示的默认对话框。
一个ReasonProvider只提供,如果权限设置为提示,显示在描述字符串和用户进行确认。
how to create a custom dialog for asking permission in blackberry and store in application Descriptor. i have created this code but i am not able get our custom message and getting Exception Uncaught Exception:no Application Instance.
class PermissionTest extends UiApplication {
private static String[] dialogChoice = { "Exit" };
static boolean permissionsOk = false;
// main method
public static void main(String[] args) {
_assertHasPermissions();
PermissionTest theApp = new PermissionTest();
theApp.enterEventDispatcher();
}
public PermissionTest() {
if (permissionsOk)
UiApplication.getUiApplication().pushScreen(new HomeScreen());
else
UiApplication.getUiApplication().pushScreen(new PermissionScreen());
}
// ASK FOR PERMISSIONS
private static void _assertHasPermissions() {
try {
// Capture the current state of permissions and check against the
// requirements.
ApplicationPermissionsManager apm = ApplicationPermissionsManager
.getInstance();
ApplicationPermissions original = apm.getApplicationPermissions();
// Set up and attach a reason provider
apm.addReasonProvider(
ApplicationDescriptor.currentApplicationDescriptor(),
new ReasonProvider() {
public String getMessage(int i) {
String msg = "I need the permissions in order to work properly.";
switch (i) {
case ApplicationPermissions.PERMISSION_LOCATION_API:
msg = "Needed for location based services.";
break;
case ApplicationPermissions.PERMISSION_BROWSER_FILTER:
msg = "Needed for location based services.";
break;
case ApplicationPermissions.PERMISSION_EMAIL:
msg = "Needed for location based services.";
break;
}
return msg;
}
});
if (original
.getPermission(ApplicationPermissions.PERMISSION_LOCATION_API) == ApplicationPermissions.VALUE_ALLOW
&& original
.getPermission(ApplicationPermissions.PERMISSION_BROWSER_FILTER) == ApplicationPermissions.VALUE_PROMPT
&& original
.getPermission(ApplicationPermissions.VALUE_ALLOW) == ApplicationPermissions.VALUE_ALLOW) {
permissionsOk = true;
} else {
// Create a permission request for each of the permissions your
// application
// needs. Note that you do not want to list all of the possible
// permission
// values since that provides little value for the application
// or the user.
// Please only request the permissions needed for your
// application.
ApplicationPermissions permRequest = new ApplicationPermissions();
permRequest
.addPermission(ApplicationPermissions.PERMISSION_LOCATION_API);
permRequest
.addPermission(ApplicationPermissions.PERMISSION_BROWSER_FILTER);
permRequest
.addPermission(ApplicationPermissions.PERMISSION_EMAIL);
permissionsOk = apm.invokePermissionsRequest(permRequest);
}
/*
* if (permissionsOk) { // do nothing } else { // exit
* System.exit(0); }
*/} catch (Exception e) {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
Dialog.ask(
"Application install error, Please re-install application",
dialogChoice, 0);
}
});
}
}
}
解决方案
You can't, apm.invokePermissionsRequest() always shows the default dialog box.
A ReasonProvider only provides the description string that is displayed if the permission is set to PROMPT and the user has to confirm it.
这篇关于如何创建一个自定义对话框,要求准许在黑莓的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文