• 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);

  • 相关阅读:
    审 讯 技巧
    带参数的多线程的方式
    通达信日线 数据格式
    visual studio 2012 update3
    单实例运行tz
    维特比算法
    Kooboo CMS的安装步骤
    年龄
    富文本编辑器---非常实用的
    printf 打印 unit32_t
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4297030.html
Copyright © 2020-2023  润新知