Android4.4获取多媒体(图片,声音,视频)路径

转自:http://www.2cto.com/kf/201312/264066.html

关于Android4.4的图片路径获取,如果回来的Uri的格式有两种

1
content: //com.android.providers.media.documents/document/image:3951
?
1
content: //media/external/images/media/3951

出现第一种Uri的操作方式如下图所示:

直接点选最近的图片,应该是Android4.4 特有的Api

. 加载中...

 

解决方案:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (DocumentsContract.isDocumentUri(context, contentUri)){
     String wholeID = DocumentsContract.getDocumentId(contentUri);
     String id = wholeID.split(:)[ 1 ];
     String[] column = { MediaStore.Images.Media.DATA };
     String sel = MediaStore.Images.Media._ID + =?;
     Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column,
             sel, new String[] { id }, null );
     int columnIndex = cursor.getColumnIndex(column[ 0 ]);
     if (cursor.moveToFirst()) {
         filePath = cursor.getString(columnIndex);
     }
     cursor.close();
} else {
     String[] projection = { MediaStore.Images.Media.DATA };
     Cursor cursor = context.getContentResolver().query(contentUri, projection, null , null , null );
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
     cursor.moveToFirst();
     filePath = cursor.getString(column_index);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 4.4 中,您可以使用以下代码来获取双 SIM 卡信息: ```java TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String simSerialNumber1 = telephonyManager.getSimSerialNumber(0); String simSerialNumber2 = telephonyManager.getSimSerialNumber(1); String subscriberId1 = telephonyManager.getSubscriberId(0); String subscriberId2 = telephonyManager.getSubscriberId(1); String line1Number1 = telephonyManager.getLine1Number(0); String line1Number2 = telephonyManager.getLine1Number(1); String networkOperatorName1 = telephonyManager.getNetworkOperatorName(0); String networkOperatorName2 = telephonyManager.getNetworkOperatorName(1); String networkCountryIso1 = telephonyManager.getNetworkCountryIso(0); String networkCountryIso2 = telephonyManager.getNetworkCountryIso(1); String simOperatorName1 = telephonyManager.getSimOperatorName(0); String simOperatorName2 = telephonyManager.getSimOperatorName(1); ``` 其中,`getSimSerialNumber(int slotIndex)` 方法用于获取指定 SIM 卡的序列号,`getSubscriberId(int slotIndex)` 方法用于获取指定 SIM 卡的 IMSI 号,`getLine1Number(int slotIndex)` 方法用于获取指定 SIM 卡的手机号码,`getNetworkOperatorName(int slotIndex)` 方法用于获取指定 SIM 卡所属的运营商名称,`getNetworkCountryIso(int slotIndex)` 方法用于获取指定 SIM 卡所属的国家代码,`getSimOperatorName(int slotIndex)` 方法用于获取指定 SIM 卡所属的 SIM 运营商名称。 需要注意的是,以上方法中的 `slotIndex` 参数可以取值 0 或 1,分别代表第一张 SIM 卡和第二张 SIM 卡。如果您的设备只支持一张 SIM 卡,那么所有的方法都只能使用 `slotIndex` 参数取值为 0 的情况。 此外,获取双 SIM 卡信息还可以使用 `SubscriptionManager` 类,该类是在 Android 5.1 中引入的,但也可以在 Android 4.4 中使用,需要通过反射来调用。如果您需要使用 `SubscriptionManager` 类,请参考以下代码: ```java SubscriptionManager subscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); List<SubscriptionInfo> subscriptionInfos = null; if (subscriptionManager != null) { subscriptionInfos = subscriptionManager.getActiveSubscriptionInfoList(); } if (subscriptionInfos != null) { for (SubscriptionInfo subscriptionInfo : subscriptionInfos) { int slotIndex = subscriptionInfo.getSimSlotIndex(); String simSerialNumber = subscriptionInfo.getIccId(); String subscriberId = subscriptionInfo.getImsi(); String line1Number = subscriptionInfo.getNumber(); String networkOperatorName = subscriptionInfo.getCarrierName().toString(); String networkCountryIso = subscriptionInfo.getCountryIso(); String simOperatorName = subscriptionInfo.getDisplayName().toString(); } } ``` 以上代码中,`getActiveSubscriptionInfoList()` 方法用于获取当前设备上所有活跃的 SIM 卡信息,返回一个 `List<SubscriptionInfo>` 对象。`SubscriptionInfo` 类包含了获取 SIM 卡信息的所有方法,使用方法与上面介绍的方法相同。需要注意的是,`getActiveSubscriptionInfoList()` 方法只能在支持 `SubscriptionManager` 类的设备上使用,否则会出现 `java.lang.NoSuchMethodError` 异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值