3

我在我的应用程序中使用 Wikiitude API 1.1 作为 AR 查看器。Wikitude 的问题是,如果我在手机启动后还没有启动实际的 Wikitude 应用程序,那么每次启动我自己的应用程序时都会收到 NullPointerException。

所以我想我是否可以先启动我的应用程序,然后他们检查 Wikiitude 是否已安装和/或运行。如果没有安装,去market n下载。如果它没有运行,那么我们应该直接将它运行到后台,这样我的应用程序就不会失去焦点。

    // Workaround for Wikitude
    this.WIKITUDE_PACKAGE_NAME = "com.wikitude";
    PackageManager pacMan = Poligamy.this.getPackageManager();
    try {
        PackageInfo pacInfo = pacMan.getPackageInfo(this.WIKITUDE_PACKAGE_NAME, pacMan.GET_SERVICES);
        Log.i("CheckWKTD", "Wikitude is Installed");
        ActivityManager aMan = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
        List<RunningAppProcessInfo> runningApps = aMan.getRunningAppProcesses();
        int numberOfApps = runningApps.size();

        for(int i=0; i<numberOfApps; i++) {
            if(runningApps.get(i).processName.equals(this.WIKITUDE_PACKAGE_NAME)) {
                this.WIKITUDE_RUNNING = 1;
                Log.i("CheckWKTD", "Wikitude is Running");
            }
        }
        if(this.WIKITUDE_RUNNING == 0) {
            Log.i("CheckWKTD", "Wikitude is NOT Running");
            /*final Intent wIntent = new Intent(Intent.ACTION_MAIN, null);
            wIntent.addCategory(Intent.CATEGORY_LAUNCHER);
            final ComponentName cn = new ComponentName("com.wikitude", 
                    "com.mobilizy.wikitudepremium.initial.Splash");
            wIntent.setComponent(cn);
            wIntent.setFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
            startActivityIfNeeded(wIntent, 0);*/
        }
    } catch (NameNotFoundException e) {
        // TODO Auto-generated catch block
        Log.i("CheckWKTD", "Wikitude is NOT Installed");
        e.printStackTrace();
        //finish();
    }

我阻止评论的部分是启动 Wikitude 的意图。但我总是未能将 Wikiitude 限制在后台。有什么帮助吗?之前谢谢。

最好的,蒂斯塔

4

1 回答 1

1

没有“直接运行到后台”这样的事情。

NullPointerException如果他们的应用程序尚未运行,我将专注于通过联系 WIKITUDE 并弄清楚为什么你会得到它来修复你的问题。

于 2010-05-16T10:21:50.967 回答