0

アプリケーションを起動するブラウザで URL を起動する 1 つのアプリケーションを開発しています。

をクリックしてEntergoogle.comを押すと、アプリケーションが起動するとします。そのために私はAPIで試しました。HttpFilterRegistry

参考までに、私はHTTPFilterDemoアプリケーションを使用しています。しかし、現在アプリを起動しているときに、NullPointerException.

openFilterメソッドに以下のコードを書きました。

 public Connection openFilter(String name, int mode, boolean timeouts) throws IOException {
    Logger.out("Protocol", "it is inside the openFilter method");
    _url = name.substring(2);
    _requestHeaders = new HttpHeaders();
    _responseHeaders = new HttpHeaders();
    _responseHeaders.setProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE, "text/html");
    Logger.out("Protocol", "here it is come ::::44444444");
    final int modHandle = CodeModuleManager.getModuleHandle("AppLaunchBrowser");
    Logger.out("Protocol", "here is the module handle:::" + modHandle);
    final ApplicationDescriptor[] apDes = CodeModuleManager.getApplicationDescriptors(modHandle);
    final ApplicationDescriptor appDescriptor = new ApplicationDescriptor(apDes[0], new String[] {});
    Logger.out("Protocol", "here is the app descriptor:::" + appDescriptor);
    try {
        final int appCode = ApplicationManager.getApplicationManager().runApplication(appDescriptor, true);
        Logger.out("Protocol", "here is the app code:::" + appCode);
    } catch (ApplicationManagerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    // }
    return this;
}

アプリケーションクラスでは、代替エントリポイントを作成し、以下のように使用しています:

  public class AppLaunch extends UiApplication{
    public static void main(String args[])
    {
        Logger.out("AppLaunch", args+"length of the arguments::::" +args.length);
        if((args != null) && (args.length > 0) && (args[0].equals("background")))
        {
            Logger.out("AppLaunch", "in the alternate entry point");
//          Logger.out("AppLaunch", args+"length of the arguments::::" +args.length);
            HttpFilterRegistry.registerFilter("www.google.co.in", "com.innominds.ca", false);


        }
        else 
        {
            Logger.out("AppLaunch", "Inside the Applaunch");
            AppLaunch theApp = new AppLaunch();
            theApp.requestForeground();
            Logger.out("AppLaunch", "created the app launch object");
            theApp.enterEventDispatcher();
//          Logger.out("AppLaunch", "in the alternate entry point");
//          HttpFilterRegistry.registerFilter("www.google.co.in", "com.innominds.ca", false);
        }
    }

    public AppLaunch()
    {
        checkPermissions();
        showTestScreen();
    }


    private void checkPermissions()
    {

        ApplicationPermissionsManager apm = ApplicationPermissionsManager.getInstance();
        ApplicationPermissions original = apm.getApplicationPermissions();

        if(original.getPermission(ApplicationPermissions.PERMISSION_BROWSER_FILTER) == ApplicationPermissions.VALUE_ALLOW)
        {
            // All of the necessary permissions are currently available
            return;
        }

        ApplicationPermissions permRequest = new ApplicationPermissions();
        permRequest.addPermission(ApplicationPermissions.PERMISSION_BROWSER_FILTER);

        boolean acceptance = ApplicationPermissionsManager.getInstance().invokePermissionsRequest(permRequest);

        if(acceptance)
        {
            // User has accepted all of the permissions
            return;
        }
        else
        {

        }
    }

    private void showTestScreen()
    {
        UiApplication.getUiApplication().pushScreen(new AppLaunchScreen());
    }
}
4

1 に答える 1

0

最後に、この問題を解決できました。実際、私は FilterBaseInterface を実装していたので、NPE は他のコールバック メソッドに入っています。

于 2012-12-18T06:29:09.810 に答える