iapp怎么调用java模块_iapp利用java调用图库

该博客介绍了如何在iApp中调用Java模块以访问Android系统的图库,并详细展示了如何从选取的图片Uri获取真实路径。通过创建ContentUris、Intent以及使用DocumentsContract和MediaStore等类,实现对不同类型的Uri处理,从而得到图片的本地路径。
摘要由CSDN通过智能技术生成

新建uri.mjava

import android.content.ContentUris;

import android.content.Intent;

import android.net.Uri;

import android.provider.DocumentsContract;

import android.provider.MediaStore;

import android.database.Cursor;

import android.content.Context;

public static String getRealPath(Context context, Uri uri)

{

String imagePath = null;

if(DocumentsContract.isDocumentUri(context, uri))

{

// 如果是document类型的Uri,则通过document id处理

String docId = DocumentsContract.getDocumentId(uri);

if ("com.android.providers.media.documents".equals(uri.getAuthority()))

{

String id = docId.split(":")[1];

String selection = MediaStore.Images.Media._ID + "=" + id;

imagePath = getImagePath(context, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);

}

else if ("com.android.providers.downloads.documents".equals(uri.getAuthority()))

{

Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));

imagePath = getImagePath(context, contentUri, null);

}

}

else if("content".equalsIgnoreCase(uri.getScheme()))

{

// content类型普通方式处理

imagePath = getImagePath(context, uri, null);

}

else if("file".equalsIgnoreCase(uri.getScheme()))

{

// file类型直接获取图片路径

imagePath = uri.getPath();

}

return imagePath;

}

public String getImagePath(Context context, Uri uri, String selection)

{

String path = null;

// 通过Uri和selection来获取真实的图片路径

Cursor cursor = context.getContentResolver().query(uri, null, selection, null, null);

if (cursor != null)

{

//syso(cursor.moveToFirst());

if (cursor.moveToFirst())

{

path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));

}

cursor.close();

}

return path;

}

//iyu

javanew(intent,"android.content.Intent","String","android.intent.action.GET_CONTENT")

java(setType,intent,"android.content.Intent.setType","String","image/*")

java(null,activity,"android.app.Activity.startActivityForResult","android.content.Intent",intent,"int",2)

//回调结果事件

javags(resultCode,activity,"android.app.Activity","RESULT_OK")

f(st_sC==2)

{

f(st_lC==resultCode)

{

java(uri,st_iT,"android.content.Intent.getData")

call(path, "mjava", "uri.getRealPath", activity, uri)

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值