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# コードから呼び出しました。エラーは以下のとおりです