• Android URI学习


    uri与file、path相互转化

    1、uri转file:

    file = new File(new URI(uri.toString()));

    2、file转uri:

    URI uri = file.toURI();

    3、uri转path:

    private String getPath(Context context, Uri uri) {  
            String path = null;
            Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
            if (cursor == null) {
                return null;
            }
            if (cursor.moveToFirst()) {
                try {
                    path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            cursor.close();
            return path;
     }

     4、path转uri:

     Uri uri = Uri.parse(path);

     5、file转path:

     String path = file.getPath();

     6、path转file:

     File file = new File(path);

     7、常用Uri

    显示网页: 
      1. Uri uri = Uri.parse("http://www.google.com"); 
      2. Intent it = new Intent(Intent.ACTION_VIEW,uri); 
      3. startActivity(it); 
     
    显示地图: 
      1. Uri uri = Uri.parse("geo:38.899533,-77.036476"); 
      2. Intent it = new Intent(Intent.Action_VIEW,uri); 
      3. startActivity(it); 
     
    路径规划
      1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); 
      2. Intent it = new Intent(Intent.ACTION_VIEW,URI); 
      3. startActivity(it); 
     
    拨打电话: 
    调用拨号程序 
      1. Uri uri = Uri.parse("tel:xxxxxx"); 
      2. Intent it = new Intent(Intent.ACTION_DIAL, uri);   
      3. startActivity(it);   
      1. Uri uri = Uri.parse("tel.xxxxxx"); 
      2. Intent it =new Intent(Intent.ACTION_CALL,uri); 
      3. 要使用这个必须在配置文件中加入 
     
    发送SMS/MMS 
    调用发送短信的程序 
      1. Intent it = new Intent(Intent.ACTION_VIEW); 
      2. it.putExtra("sms_body", "The SMS text"); 
      3. it.setType("vnd.android-dir/mms-sms"); 
      4. startActivity(it);   
    发送短信 
      1. Uri uri = Uri.parse("smsto:0800000123"); 
      2. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 
      3. it.putExtra("sms_body", "The SMS text"); 
      4. startActivity(it);   
    发送彩信 
      1. Uri uri = Uri.parse("content://media/external/images/media/23"); 
      2. Intent it = new Intent(Intent.ACTION_SEND); 
      3. it.putExtra("sms_body", "some text"); 
      4. it.putExtra(Intent.EXTRA_STREAM, uri); 
      5. it.setType("image/png"); 
      6. startActivity(it); 
     
    发送Email 
      1. 
      2. Uri uri = Uri.parse("mailto:xxx@abc.com"); 
      3. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 
      4. startActivity(it); 
      1. Intent it = new Intent(Intent.ACTION_SEND); 
      2. it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com"); 
      3. it.putExtra(Intent.EXTRA_TEXT, "The email body text"); 
      4. it.setType("text/plain"); 
      5. startActivity(Intent.createChooser(it, "Choose Email Client"));   
      1. Intent it=new Intent(Intent.ACTION_SEND);   
      2. String[] tos={"me@abc.com"};   
      3. String[] ccs={"you@abc.com"};   
      4. it.putExtra(Intent.EXTRA_EMAIL, tos);   
      5. it.putExtra(Intent.EXTRA_CC, ccs);   
      6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");   
      7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   
      8. it.setType("message/rfc822");   
      9. startActivity(Intent.createChooser(it, "Choose Email Client")); 
     
    添加附件 
      1. Intent it = new Intent(Intent.ACTION_SEND); 
      2. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); 
      3. it.putExtra(Intent.EXTRA_STREAM, "[url=]file:///sdcard/mysong.mp3[/url]"); 
      4. sendIntent.setType("audio/mp3"); 
      5. startActivity(Intent.createChooser(it, "Choose Email Client")); 
     
    播放多媒体 
      1.   
      2. Intent it = new Intent(Intent.ACTION_VIEW); 
      3. Uri uri = Uri.parse("[url=]file:///sdcard/song.mp3[/url]"); 
      4. it.setDataAndType(uri, "audio/mp3"); 
      5. startActivity(it); 
      1. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1"); 
      2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 
      3. startActivity(it);   
     
    Uninstall 程序 
      1. Uri uri = Uri.fromParts("package", strPackageName, null); 
      2. Intent it = new Intent(Intent.ACTION_DELETE, uri); 
      3. startActivity(it); 
     
    //调用相册 
    public static final String MIME_TYPE_IMAGE_JPEG = "image/*"; 
    public static final int ACTIVITY_GET_IMAGE = 0; 
    Intent getImage = new Intent(Intent.ACTION_GET_CONTENT); 
    getImage.addCategory(Intent.CATEGORY_OPENABLE); 
    getImage.setType(MIME_TYPE_IMAGE_JPEG); 
    startActivityForResult(getImage, ACTIVITY_GET_IMAGE); 
     
    //调用系统相机应用程序,并存储拍下来的照片 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    time = Calendar.getInstance().getTimeInMillis(); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment 
    .getExternalStorageDirectory().getAbsolutePath()+"/tucue", time + ".jpg"))); 
    startActivityForResult(intent, ACTIVITY_GET_CAMERA_IMAGE); 
     
    uninstall apk 
    /**未测试 
    Uri uninstallUri = Uri.fromParts("package", "xxx", null); 
    returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri); 
    */ 
    Uri packageURI = Uri.parse("package:"+wistatmap);   
    Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);   
    startActivity(uninstallIntent); 
     
    install apk 
    Uri installUri = Uri.fromParts("package", "xxx", null); 
    returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri); 
    play audio 
    Uri playUri = Uri.parse("[url=]file:///sdcard/download/everything.mp3[/url]"); 
    returnIt = new Intent(Intent.ACTION_VIEW, playUri); 
     
    //发送附件 
    Intent it = new Intent(Intent.ACTION_SEND);   
    it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   
    it.putExtra(Intent.EXTRA_STREAM, "[url=]file:///sdcard/eoe.mp3[/url]");   
    sendIntent.setType("audio/mp3");   
    startActivity(Intent.createChooser(it, "Choose Email Client")); 
     
    //搜索应用 
    Uri uri = Uri.parse("market://search?q=pname:pkg_name");   
    Intent it = new Intent(Intent.ACTION_VIEW, uri);   
    startActivity(it);   
    //where pkg_name is the full package path for an application 
     
    //进入联系人页面 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    intent.setData(People.CONTENT_URI); 
    startActivity(intent); 
     
    //查看指定联系人 
    Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);//info.id联系人ID 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    intent.setData(personUri);
     
    startActivity(intent);

  • 相关阅读:
    Docker——Windows版本Docker安装
    Ansible 企业级自动化运维平台开发实战
    gd32 禁用读写保护
    docker基础篇:安装redis单机版
    解决Netty那些事儿之Reactor在Netty中的实现(创建篇)-上
    公司员工培训管理系统的开发研究(J2EE)
    215. 数组中的第K个最大元素+17.14. 最小K个数(优先级队列)
    springboot日志配置(logback+slf4j配置)
    electron 基础项目搭建 &&主线程和渲染线程的通信
    [HNCTF 2022 WEEK2]ez_ssrf题目解析
  • 原文地址:https://blog.csdn.net/HardProgrammer/article/details/132905245