• Android URI简单介绍


    就Android平台而言,URI主要分三个部分:scheme, authority and path。当中authority又分为host和port。格式例如以下:
    scheme://host:port/path
    举个实际的样例:
    content://com.example.project:200/folder/subfolder/etc
    ---------/  ---------------------------/ ---/ --------------------------/
    scheme                 host               port        path
                    --------------------------------/
                              authority   

    如今大家应该知道data flag中那些属性的含义了吧,看下data flag
    <data android:host="string"
          android:mimeType="string"
          android:path="string"
          android:pathPattern="string"
          android:pathPrefix="string"
          android:port="string"
          android:scheme="string" />
    可是我们在程序中通常是不直接用URI来标识CP的,是的,正如我们通常见到的用定义的常量来标识。比如standard CP中的Contacts,我们就用Contacts.People.CONTENT_URI来标识Contacts CP中People这个表。那么要标识某个详细的人怎么办呢? 这就用到了ContentUris.withAppendedId() 和 Uri.withAppendedPath()。比如我们要表示content://contacts/people/20,那么我们就能够用例如以下语句:
    Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, 20); 或者
    Uri uri = Uri.withAppendedPath(People.CONTENT_URI, "20");

    举些样例,如:

    全部联系人的Uri: content://contacts/people

    某个联系人的Uri: content://contacts/people/5

    全部图片Uri: content://media/external

    某个图片的Uri:content://media/external/images/media/4

    以下是一些经常使用的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. 要使用这个必须在配置文件里增加<uses-permission id="Android.permission.CALL_PHONE" />

    发送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);

  • 相关阅读:
    前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)
    steps 步骤条、时间轴
    碰撞检测经典解决方案
    延迟渲染(Deferred Shading)技术详解
    配备透明触摸屏 看3D全息投影概念手机
    预渲染技术
    APK改之理(APK IDE)修改APK简单的入门教程
    如何获取显卡的GPU占用率和显存占用情况
    图像编辑之对比度调整 亮度对比度的算法公式
    别被你的双眼所欺骗 100张神奇的视觉欺骗图
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4276902.html
Copyright © 2020-2023  润新知