美文网首页
Android Uri使用与详解

Android Uri使用与详解

作者: 珩珩保镖 | 来源:发表于2024-08-26 10:59 被阅读0次

Android Uri使用与详解

1. Uri使用

使用Uri通常需要有个提供使用的地方比如YourActivity那么需要提供一个intent-filter里面格式大概如下:

<application>
    <activity android:name="com.test.YourActivity">
        <intent-filter>
            <!-- 指定可以响应的动作 -->
            <action android:name="android.intent.action.VIEW" />

            <!-- 指定可以响应的数据类型 -->
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" /><!--让浏览器拉起-->

            <!-- 定义可以处理的URI格式 yourapp://yourhost/yourpath 注意pathPrefix可以写为path-->
            <data
                  android:host="yourhost"
                  android:pathPrefix="/yourpath"
                  android:scheme="yourapp" />  
        </intent-filter>
    </activity>
</application>

需要使用的地方(可以是其他App)通过这个uri调用拉起这个页面

Intent intent = new Intent(); // 或者 new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("yourapp://yourhost/yourpath"));
//如果不确定有uri可以通过 intent.resolveActivity(getPackageManager()) != null判断
startActivity(intent);  //或ActivityUtils.startActivity(intent)

kotlin实现拉起

var intent = Intent()
intent.data = Uri.parse("yourapp://yourhost/yourpath");
startActivity(intent) // ActivityUtils.startActivity(intent)

通过adb指令拉起

adb shell am start -d yourapp://yourhost/yourpath

#或者加上-a 或加上 -n
adb shell am start -a android.intent.action.VIEW -d yourapp://yourhost/yourpath
adb shell am start -a android.intent.action.VIEW -d yourapp://yourhost/yourpath -n com.test/.YourActivity

2. Uri说明

<data>标签

上面内容核心是<data>标签指定了三个关键部分:

  • android:scheme:这是URI的scheme部分,例如httphttps或自定义的如yourapp

  • android:host:这是URI的主机名部分。

  • android:pathPrefix:这是一个可选的路径前缀,用于匹配URI中的路径。

    如果你希望匹配完整的路径,则可以使用android:path属性代替android:pathPrefix

如果你想要支持更复杂的URI匹配,比如带有参数的URI,可以使用正则表达式来匹配路径

<data
    android:scheme="yourapp"
    android:host="yourhost"
    android:pathPattern="/yourpath/[^/]+/[^/]+" />

会匹配形如yourapp://yourhost/yourpath/param1/param2的URI

其他标签

<action> 标签中的<action android:name="android.intent.action.VIEW" />是个通用的匹配

<category>标签的android.intent.category.DEFAULT 是个默认通用匹配;android.intent.category.BROWSABLE是浏览器的匹配

3. 系统里面默认Uri

Android系统中有一些预定义的URI模式和对应的Intent Action,它们通常用于启动系统的某些内置功能或应用。以下是一些常见的系统URI模式及其对应的Activity或功能,以及它们所在的包名和类名(如果适用):

URI 描述 包名/类名
content://contacts/people 显示联系人列表 com.android.contacts
/com.android.contacts.activities.ContactsListActivity
content://calendar/events 显示日历事件 com.android.calendar
/com.android.calendar.AllInOneActivity
content://downloads/public_downloads 显示下载列表 com.android.providers.downloads.ui
/com.android.providers.downloads.ui.DownloadListActivity
content://sms/inbox 显示短信列表 com.android.mms
/com.android.mms.ui.ConversationList
content://call_log/calls 显示通话记录 com.android.dialer
/com.android.dialer.calllog.CallLogActivity
content://browser/bookmarks 显示书签列表 com.android.chrome
/org.chromium.chrome.browser.bookmarks.BookmarkManager
content://media/external/audio/albums 显示音乐专辑列表 com.android.music
/com.android.music.MediaFilesActivity
content://media/external/audio/artists 显示音乐艺术家列表 com.android.music
/com.android.music.ArtistsActivity
content://media/external/audio/playlists 显示播放列表列表 com.android.music
/com.android.music.PlaylistsActivity
content://media/external/audio/media 显示媒体文件列表 com.android.music
/com.android.music.MediaFilesActivity
content://media/external/images/media 显示图片列表 com.android.gallery3d
/com.android.gallery3d.app.GalleryActivity
content://media/external/video/media 显示视频列表 com.android.gallery3d
/com.android.gallery3d.app.VideoListActivity
content://com.android.externalstorage.documents/tree/primary%3A 显示外部存储文件管理器 com.google.android.apps.files
/com.google.android.apps.nbu.files.app.ui.FileListActivity

请注意,这些目标Activity和包名可能因不同的Android版本和设备制造商而有所不同。例如,一些设备可能使用不同的应用来处理这些内容,如联系人管理、日历、文件管理等。此外,某些系统组件可能不是以Activity的形式直接暴露给用户,而是作为服务或内容提供者运行。

相关文章

网友评论

      本文标题:Android Uri使用与详解

      本文链接:https://www.haomeiwen.com/subject/dbaokjtx.html