0

我在android中创建了一个库项目。这个库项目从图库中选择图像的真实路径。我想在 asp.net 中引用这个应用程序。所以,我使用 ikvm 将它转换为 dll,但是有一个警告“”。

代码如下。

public String BrowseImageFromGallery(){
    Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(galleryIntent, GALLERY_REQUEST);
    if(imageRealPath != null)
    {
        return imageRealPath;
    }
    return null;
}

public String TakeImageFromCamera(){

    TakeImage();
    return imageRealPath;
}

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent ){

    switch (resultCode){

    case GALLERY_REQUEST : {
        selectedImageUri = intent.getData();
        imageRealPath = GetRealPathFromUri(selectedImageUri);
    }
    break;

    case CAMERA_REQUEST : {
        imageRealPath = GetRealPathFromUri(selectedImageUri);
    }
    break;
    }

}

private String GetRealPathFromUri(Uri imageUri) {

    try
    {
        String[] proj = {MediaStore.Images.Media.DATA};
        Cursor cursor = managedQuery(imageUri, proj, null, null, null);
        int column_Index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_Index);
    }
    catch(Exception e)
    {
        return imageUri.getPath();
    }
}

private void TakeImage() {
    ContentValues values = new ContentValues();
     imageName = String.valueOf(System.currentTimeMillis());
    values.put(MediaStore.Images.Media.TITLE, imageName);
    selectedImageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            values);

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, selectedImageUri);
    startActivityForResult(intent, CAMERA_REQUEST);

}

}

问题是由于我正在扩展 Activity 类并且当我将其转换为 dll 时它没有引用。所以,我添加了android.jar的引用。一切正常,但是当我运行程序时出现错误。

为了检查什么是我在 java 库中创建了一个简单的 add 方法,并在单击按钮时从 c# 代码中调用它。错误如下

错误

4

1 回答 1

1

IKVM 用于 Java SE。您只能使用 Java SE 或第三方的 API。您的 Android.jar 只是编译器的 stup jar 文件。在运行时,它包含对 Android Java VM 的本机调用。

创建您自己的存根 android.app.Activity 而不是 Android.jar。您的存根应该只调用标准 Java API 的 API。

于 2013-02-14T17:30:20.817 回答