如何实现 CordovaInterface 以便我可以在 webview 中使用相机?

Posted

技术标签:

【中文标题】如何实现 CordovaInterface 以便我可以在 webview 中使用相机?【英文标题】:How to implement CordovaInterface so that I can use camera in the webview? 【发布时间】:2012-12-26 06:30:19 【问题描述】:

我是 android 新手。

我按照 tutorial 在我的 Android 应用中嵌入了 Cordova WebView

我已经使用CordovaWebView 从我的服务器成功加载了一个网页。

假设我在那个网页上有一个名为“Capture Photo”的按钮,我应该怎么做才能调用本地 API 以便我可以使用相机?

教程建议我需要实现CordovaInterface 以按如下方式使用相机。

@Override
public void setActivityResultCallback(CordovaPlugin plugin) 
    this.activityResultCallback = plugin;        

我不知道 activityResultCallback 到底是什么。是否有其他教程向我展示如何实现此接口?

【问题讨论】:

【参考方案1】:

因为没有人回答我的问题。

我找了一个tutorial可以解决这个问题。

更新: 鉴于链接已损坏,我将发布自己的代码来实现 Cordova 接口。

// Instance for CordovaInterface
private final ExecutorService threadPool = Executors.newCachedThreadPool();
private boolean mAlternateTitle = false;
private boolean bound;
private boolean volumeupBound;
private boolean volumedownBound;
private CordovaPlugin activityResultCallback;
private Object activityResultKeepRunning;
private Object keepRunning;


public Activity getActivity() 
    return this;


@Deprecated
public Context getContext() 
    return this;


public ExecutorService getThreadPool() 
    return threadPool;



public void setActivityResultCallback(CordovaPlugin plugin) 
    this.activityResultCallback = plugin;



public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) 
    this.activityResultCallback = command;
    this.activityResultKeepRunning = this.keepRunning;

    // If multitasking turned on, then disable it for activities that return
    // results
    if (command != null) 
        this.keepRunning = false;
    

    // Start activity
    super.startActivityForResult(intent, requestCode);



@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent) 
    super.onActivityResult(requestCode, resultCode, intent);
    final CordovaPlugin callback = this.activityResultCallback;
    if (callback != null) 
        // Need to use background thread
        this.getThreadPool().execute(new Runnable() 
            public void run() 
                callback.onActivityResult(requestCode, resultCode, intent);
            
        );
    

【讨论】:

我一直在尝试在 phonegap 3.0 中使用地理定位插件。我收到一个错误“插件应该使用 CordovaInterface.getThreadPool()”。直到几天前我才收到此错误。突然开始明白了。我应该为我希望使用的每个插件实现 CordovaInterface 吗?我该怎么做? 找到所用教程的链接:phonegap.infil00p.org/android/cordova/phonegap/2012/12/04/… 更新链接:infil00p.org/android/cordova/phonegap/2012/12/04/…

以上是关于如何实现 CordovaInterface 以便我可以在 webview 中使用相机?的主要内容,如果未能解决你的问题,请参考以下文章

CS50 PSET2:根本不知道如何实现 isalpha 以便检查每个命令行参数

边界半径在ie中不起作用,我该如何实现以便它开始在ie中工作[重复]

如何实现流媒体引擎,以便家庭网络上的树莓派视频流可以公开

如何在此处正确实现去抖动时间,以便在纯 JavaScript 中每个时间限制仅触发一次?

如何使用 UICollectionView 创建此 UI,以便内容不受单元格边界的限制

如何使用 Ocelot 在 .Net Core API 网关中实现 Windows 身份验证,以便所有下游服务都可以访问 IWindowsPrincipal?