如何创建一个自定义对话框,要求准许在黑莓 [英] how to create a custom dialog for asking permission in blackberry

查看:98
本文介绍了如何创建一个自定义对话框,要求准许在黑莓的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何创建应用程序描述符请求允许在黑莓和存储自定义对话框。我已经创造了这个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆