java - Android - Java - 找不到处理 Intent 的 Activity

标签 java javascript android cordova

我正在尝试为跨平台程序Phonegap/Cordova 3.2创建一个Android/Java插件。我正在遵循几个教程,但无法让最简单的插件工作。

目前我正在研究我的 Java 代码在某个地方是错误的。

有人可以检查一下以下代码并指出是否有明显错误吗?

我不断收到的错误是

Exception: No Activity found to handle Intent { act=android.intent.action.MEDIA_SCANNER_SCAN_FILE dat=file:///{"fullPath":"media\/test.mp3"} }

这是我的 .java 文件

package org.media.scan;

import java.io.File;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;

import android.content.Intent;
import android.net.Uri;

public class Scan extends CordovaPlugin {

@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {

    try {
        if ( action.equals("addRemove") ) {

            String filePath = args.getString(0);

            filePath = filePath.replaceAll("^file://", "");

            if (filePath.equals("")) {
                callbackContext.error("null path passed");
                return false;
            }               

            File file = new File(filePath);

            Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            scanIntent.setData(Uri.fromFile(file));

            this.cordova.getActivity().startActivity( scanIntent );
            callbackContext.success("good");
            return true;

        } else {
            callbackContext.error("invalid action phrase");

        }

        return false;

    } catch(Exception e) {

        System.err.println("Exception: " + e.getMessage());
        callbackContext.error(e.getMessage());
        return false;
    }




}

}

我正在使用此 .js 代码调用我的 Java 代码

var Scan = {
createEvent:function (fullPath, successCallback, errorCallback) {
    cordova.exec(
        successCallback, // success callback function
        errorCallback, // error callback function
        'Scan', // mapped to our native Java class
        'addRemove', // with this action name
        [
            {                  
                "fullPath":fullPath
            }
        ]
    );
}
}

module.exports = Scan;

最佳答案

这是一个广播操作而不是 Activity 操作,您应该使用发送广播方法来执行这种操作!

http://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_SCANNER_SCAN_FILE

这是代码中的错误行“this.cordova.getActivity().startActivity( scanIntent ); ”

关于java - Android - Java - 找不到处理 Intent 的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20446096/

相关文章:

android - 如何将白色设置为 google+ 登录按钮?

Java 小程序和代理

javascript - 使用 jQuery 在单击时复制特定结构

java - 如何找到NDK的路径?

javascript - Angular : How to get value in html passing to other component?

javascript - 微型 slider 没有正确居中图像

java - Android 应用程序语言到处都在变化,但在菜单和选项卡布局标题中没有变化

java - 匹配阿拉伯日期或普通日期的正则表达式

java - 使用 JAXB 进行数字签名的命名空间处理

java - 如何在 Java 中创建 X% 百分比的灰色?