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 は、コンパイラの単なる jar ファイルです。実行時には、Android Java VM へのネイティブ呼び出しが含まれます。

Android.jar ではなく、独自のスタブ android.app.Activity を作成します。スタブは、標準 Java API の API のみを呼び出す必要があります。

于 2013-02-14T17:30:20.817 に答える