Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >我所理解的Intent 和Intent-filter

我所理解的Intent 和Intent-filter

作者头像
非著名程序员
发布于 2018-02-09 07:35:57
发布于 2018-02-09 07:35:57
1.5K00
代码可运行
举报
文章被收录于专栏:非著名程序员非著名程序员
运行总次数:0
代码可运行

1.Intent

Intent 是一个消息传递对象,可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:

  • 启动 Activity: Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity(),可以启动新的 Activity 实例。Intent 描述了要启动的 Activity,并携带了任何必要的数据。 如果希望在 Activity 完成后收到结果,可以调用 startActivityForResult()。在 Activity 的 onActivityResult() 回调中, Activity 将结果作为单独的 Intent 对象接收。
  • 启动服务: Service 是一个不使用用户界面而在后台执行操作的组件。通过将 Intent 传递给 startService(),可以启动服务执行一次性操作(例如,下载文件)。Intent 描述了要启动的服务,并携带了任何必要的数据。 如果服务旨在使用客户端-服务器接口,则通过将 Intent 传递给 bindService(),可以从其他组件绑定到此服务。
  • 传递广播: 广播是任何应用均可接收的消息。系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播。通过将 Intent 传递给 sendBroadcast()、sendOrderedBroadcast() 或 sendStickyBroadcast(),可以将广播传递给其他应用。

2.Intent 类型

  • 显式 Intent: >按名称(完全限定类名)指定要启动的组件。 通常在自己的应用中使用显式 Intent 来启动组件,这是因为你知道要启动的 Activity 或服务的类名。例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件。创建显式 Intent 启动 Activity 或服务时,系统将立即启动 Intent 对象中指定的应用组件。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
例如:这个Intent由FirstActivity发起,显式地指定SecondActivity响应startActivity(new Intent(FirstActivity.this, SecondActivity.class));
  • 隐式 Intent : >不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。 例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。 >创建隐式 Intent 时,Android 系统通过将 Intent 的内容与在设备上其他应用的清单文件中声明的 Intent 过滤器进行比较,从而找到要启动的相应组件。 如果 Intent 与 Intent 过滤器匹配,则系统将启动该组件,并向其传递 Intent 对象。 如果多个 Intent 过滤器兼容,则系统会显示一个对话框,支持用户选取要使用的应用。

Intent 过滤器是应用清单文件中的一个表达式,它指定该组件要接收的 Intent 类型。 例如,通过为 Activity 声明 Intent 过滤器,您可以使其他应用能够直接使用某一特定类型的 Intent 启动 Activity。同样,如果您没有为 Activity 声明任何 Intent 过滤器,则 Activity 只能通过显式 Intent 启动。

注意:为了确保应用的安全性,启动 Service 时,请始终使用显式 Intent,且不要为服务声明 Intent 过滤器。使用隐式 Intent 启动服务存在安全隐患,因为您无法确定哪些服务将响应 Intent,且用户无法看到哪些服务已启动。

隐式 Intent 如何通过系统传递以启动其他 Activity 的图解: [1] Activity A 创建包含操作描述的 Intent,并将其传递给 startActivity()。 [2] Android 系统搜索所有应用中与 Intent 匹配的 Intent 过滤器。 找到匹配项之后, [3] 该系统通过调用匹配 Activity(Activity B)的 onCreate() 方法并将其传递给 Intent,以此启动匹配 Activity。

3.Intent对象包含的信息

Intent 对象携带了 Android 系统用来确定要启动哪个组件的信息(例如,准确的组件名称或应当接收该 Intent 的组件类别),以及收件人组件为了正确执行操作而使用的信息(例如,要采取的操作以及要处理的数据)。

a).Component name

要启动的组件名称。 这是可选项,但也是构建显式 Intent 的一项重要信息,这意味着 Intent 应当仅传递给由组件名称定义的应用组件。 如果没有组件名称,则 Intent 是隐式的,且系统将根据其他 Intent 信息(例如,以下所述的操作、数据和类别)决定哪个组件应当接收 Intent。 因此,如需在应用中启动特定的组件,则应指定该组件的名称。 Intent 的这一字段是一个 ComponentName 对象,可以使用目标组件的完全限定类名指定此对象,其中包括应用的软件包名称。 例如, com.example.ExampleActivity。 可以使用 setComponent()、setClass()、setClassName() 或 Intent 构造函数设置组件名称。

b)action

指定要执行的通用操作(例如,“查看”或“选取”)的字符串。

对于广播 Intent,这是指已发生且正在报告的操作。操作在很大程度上决定了其余 Intent 的构成,特别是数据和 extra 中包含的内容。 可以指定自己的操作,供 Intent 在应用内使用。但是,通常应该使用由 Intent 类或其他框架类定义的操作常量。 以下是一些用于启动 Activity 的常见操作:

  • ACTION_VIEW 如果你拥有一些某项 Activity 可向用户显示的信息(例如,要使用图库应用查看的照片;或者要使用地图应用查看的地址),请使用 Intent 将此操作与 startActivity() 结合使用。
  • ACTION_SEND 这也称为“共享”Intent。如果你拥有一些用户可通过其他应用(例如,电子邮件应用或社交共享应用)共享的数据,则应使用 Intent 将此操作与 startActivity() 结合使用。 可以使用 setAction() 或 Intent 构造函数为 Intent 指定操作。 如果定义自己的操作,请确保将应用的软件包名称作为前缀。 例如:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";

c)Data

引用待操作数据和/或该数据 MIME 类型的 URI(Uri 对象)。提供的数据类型通常由 Intent 的操作决定。例如,如果操作是 ACTION_EDIT,则数据应包含待编辑文档的 URI。 创建 Intent 时,除了指定 URI 以外,指定数据类型(其 MIME 类型)往往也很重要。例如,能够显示图像的 Activity 可能无法播放音频文件,即便 URI 格式十分类似时也是如此。因此,指定数据的 MIME 类型有助于 Android 系统找到接收 Intent 的最佳组件。但有时,MIME 类型可以从 URI 中推断得出,特别当数据是 content: URI 时尤其如此。这表明数据位于设备中,且由 ContentProvider 控制,这使得数据 MIME 类型对系统可见。 要仅设置数据 URI,请调用 setData()。 要仅设置 MIME 类型,请调用 setType()。如有必要,可以使用 setDataAndType() 同时显式设置二者。

d)Category

一个包含应处理 Intent 组件类型的附加信息的字符串。 您可以将任意数量的类别描述放入一个 Intent 中,但大多数 Intent 均不需要类别。 以下是一些常见类别: CATEGORY_BROWSABLE 目标 Activity 允许本身通过网络浏览器启动,以显示链接引用的数据,如图像或电子邮件。 CATEGORY_LAUNCHER 该 Activity 是任务的初始 Activity,在系统的应用启动器中列出。 有关类别的完整列表,请参阅 Intent 类描述。 可以使用 addCategory() 指定类别。

e)Extra

Extra是携带完成请求操作所需的附加信息的键值对。正如某些操作使用特定类型的数据 URI 一样,有些操作也使用特定的 extra。 可以使用各种 putExtra() 方法添加 extra 数据,每种方法均接受两个参数:键名和值。还可以创建一个包含所有 extra 数据的 Bundle 对象,然后使用 putExtras() 将Bundle 插入 Intent 中。

f)Flags

在 Intent 类中定义的、充当 Intent 元数据的标志。 标志可以指示 Android 系统如何启动 Activity(例如,Activity 应属于哪个任务),以及启动之后如何处理(例如,它是否属于最近的 Activity 列表)。

4.Intent-filter

应用组件应当为自身可执行的每个独特作业声明单独的过滤器。例如,图像库应用中的一个 Activity 可能会有两个过滤器,分别用于查看图像和编辑图像。 当 Activity 启动时,它将检查 Intent 并根据 Intent 中的信息决定具体的行为(例如,是否显示编辑器控件)。

每个 Intent 过滤器均由应用清单文件中的 元素定义,并嵌套在相应的应用组件(例如, 元素)中。 在 内部,可以使用以下三个元素中的一个或多个指定要接受的 Intent 类型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<action>
在 name 属性中,声明接受的 Intent 操作。该值必须是操作的文本字符串值,而不是类常量。
<data>
使用一个或多个指定数据 URI 各个方面(scheme、host、port、path 等)和 MIME 类型的属性,声明接受的数据类型。
<category>
在 name 属性中,声明接受的 Intent 类别。该值必须是操作的文本字符串值,而不是类常量。

注:为了接收隐式 Intent,必须将 CATEGORYDEFAULT 类别包括在 Intent 过滤器中。 方法 startActivity() 和 startActivityForResult() 将按照已申明 CATEGORYDEFAULT 类别的方式处理所有 Intent。 如果未在 Intent 过滤器中声明此类别,则隐式 Intent 不会为你的 Activity解析。

5.Intent和Intentfilter有什么联系

当然只有在使用隐式intent的时候,Intent才会和Intentfilter有关系。

a).当intent的使用者,发起一个意图之前会在intent中添加用于响应者用于匹配的信息,包括:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<action>
<data>
<category>

这三个中的一个或者更多;

b).假设有个应用的组件(可能是与Intent使用者在同一个应用内,也可能不再同一应用内),刚好声明了和intent使用者一样的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<action>
<data>
<category>

c).当Intent使用者发起意图的时候,这个应用中声明有相同信息的组件将对这个意图做出响应。

下面是一个例子: FirstActivity发起一个意图,意图中包括的信息是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Intent intent = new Intent();intent.setAction("android.intent.action.ACTION_START");intent.addCategory("com.example.geekp.intent.My");

FirstActivity.java代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {//                显式Intent//                startActivity(new Intent(FirstActivity.this, SecondActivity.class));//                隐式Intent
                Intent intent = new Intent();
                intent.setAction("android.intent.action.ACTION_START");
            
                if(null!=intent.resolveActivity(getPackageManager()))
                startActivity(intent);
                else
                    Toast.makeText(v.getContext(),"intent没有响应对象",Toast.LENGTH_SHORT).show();

            }
        });
    }}

xml:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_first"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.geekp.intent.FirstActivity">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转 " />
</RelativeLayout>

SecondActivity在Activity的声明的时候指明了intent-filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<activity
    android:name=".SecondActivity"
    android:label="@string/title_activity_second"
    android:theme="@style/AppTheme.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.ACTION_START" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

SecondActivity .java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
}

对应的xml:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.example.geekp.intent.SecondActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="399dp"
        android:layout_height="wrap_content"
        android:text="这是第二个Activity" />
</LinearLayout>

当按钮被点击的时候FirstActivity就会发起意图,系统会匹配到SecondActivity(当然是使用intent-filter中的信息、、),看一看效果:

7.注意事项

a).在使用隐式intent的时候,一定要在需要响应的组件声明的时候给intent-filter加上属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<category android:name="android.intent.category.DEFAULT" />

方法 startActivity() 和 startActivityForResult() 将按照已申明 CATEGORY_DEFAULT 类别的方式处理所有 Intent。 如果未在 Intent 过滤器中声明此类别,则隐式 Intent 不会被任何被系统匹配到,所以永远不会有组件响应你的意图。

b).intent-filter中的<action>、<category><data>属性可以有多个,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<activity android:name="ShareActivity">
    <!-- This activity handles "SEND" actions with text data -->
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
    <!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <action android:name="android.intent.action.SEND_MULTIPLE"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="application/vnd.google.panorama360+jpg"/>
        <data android:mimeType="image/*"/>
        <data android:mimeType="video/*"/>
    </intent-filter>
</activity>

c).如果有两个组件的都被匹配到,也就是说Android系统根据意图的<action>、<category>、<data>匹配到多个复合的组件,那么将会出现选择框让你来选择。

例如:如果此时我们创建一个与SecondActivity一样的ThreeActivity(除了名称不一样),在ThreeActivity的声明也和SecondActivity的一样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<activity android:name=".ThreeActivity">
    <intent-filter>
        <action android:name="android.intent.action.ACTION_START" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

验证一下:

d).必须是Intent的属性和组件过滤器的信息完全匹配上,组件才会做出相应,否则没有组件响应。如我们的SecondActivity的过滤器中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<intent-filter>
    <action android:name="android.intent.action.ACTION_START" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

我们在FirstActivity实例化Intent的时候,按理来说一定也要添加上<category android:name="android.intent.category.DEFAULT" /> 但是为什么我们在这里没有添加呢?细心的人应该会发现,答案就在a)“方法 startActivity() 和 startActivityForResult() 将按照已申明 CATEGORY_DEFAULT 类别的方式处理所有 Intent。 "也就是这两个方法会为我们添加上这个属性,所以在FirstActivity的intent只需要添加这个属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 intent.setAction("android.intent.action.ACTION_START");
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
为什么NAS需要内网穿透,如何给自建NAS做内网穿透
‌局域网(内网):‌ 指的是我们自己组建的小范围私有网络,比如家里的WiFi、公司的内部网络。在这个网络里的设备(你的电脑、手机、打印机、NAS等)都使用‌私有IP地址‌(比如常见的 192.168.1.100)互相通信。这些地址就像是家里的房间号,只在自家的“房子”(局域网)里有效。
用户11644095
2025/06/03
2620
远程开机(外网WOL远程唤醒)「建议收藏」
1.首先,我们要在主板 BIOS 里面设置 WOL 唤醒功能的开关,大部分主板都会支持唤醒
全栈程序员站长
2022/09/05
12.7K0
远程开机(外网WOL远程唤醒)「建议收藏」
​mineportal新硬件选型,威联通or群晖?
本文关键字:威联通vs群晖,公网IP盒子,群晖personal photostation
minlearn
2020/09/27
1.5K0
玩玩NAS、软路由,搭建家庭影音系统
我平时爱看一些高清电影,4k、HDR之类的,还有很多国内视频软件没有的电影。我媳妇也喜欢看剧,平时做饭的时候,都会用平板播放电视剧。所以我家对影音这块是有需求的。
Yuyy
2023/03/08
5.8K0
玩玩NAS、软路由,搭建家庭影音系统
WOL(Wake On LAN – 局域网唤醒)外网唤醒 配置教程 远程开机「建议收藏」
前言(废话):虽然这个功能叫局域网唤醒,但与路由器的端口映射功能配合,广域网唤醒也是很容易的。只要有一台能上网的电脑或手机,就能把家中电脑打开,需要用家里电脑又不在家的时候很方便。 注意事项: 此教程是为了实现外网唤醒内网主机,所以开始之前请确保您的宽带运营商分配给你的IP是公网IP!!!如果您的路由器获取的IP是内网IP(下面有IP段),就不能在外网唤醒了。不过!!如果您用的是光猫路由一体机,下面的路由器获取的也是内网IP,这时就需要登录光猫,将连接方式改为桥接,然后通过路由器拨号上网,这样路由器获取的才能是公网IP,路由器的DDNS功能才能将域名解析到你的公网IP上。 内网IP段:192.168.0.0-192.168.255.255、172.16.0.0-172.31.255.255、10.0.0.0-10.255.255.255 请确保您的路由器有DDNS功能(现在应该是都有的) 一、开启WOL功能 开机狂按 进BIOS设置
全栈程序员站长
2022/08/22
21.4K1
WOL(Wake On LAN – 局域网唤醒)外网唤醒 配置教程 远程开机「建议收藏」
NAS 共享访问协议 — NFS、SMB、FTP、WebDAV 各有何优势?
随着智能化互联时代的来临,家中的智能设备越来越多:电视机、平板、游戏主机、电脑、手机等遍及家中各个角落,同时设备之间共享数据的需求变的越来越强烈。比如同步、备份手机上的照片和视频,在电视机上观看电脑中下载的影片、手机拍摄的视频,存储高清电影、音乐、VLOG 素材等。这时候在家中搭建一台 NAS(Network Attached Storage:网络附属存储)存储服务器是不错的选择,在备份保障数据安全的同时给家庭娱乐带来更多方便。在企业中,NAS 也有着广泛的应用,其部署简单,扩展方便,在文件共享、容灾备份领域发挥了重要作用。
JMCui
2020/06/28
73.3K0
使用ipv6内网穿透,实现私有云盘搭建,实现远程控制等功能
ipv6为每一个设备都标注了地址,因此可以直接使用ipv6访问内网中的设备,实现与公网唯一ip一样的功能 从而可以实现远程ftp访问,远程控制,实现个人私有云盘搭建。 买个4t的硬盘安装在家里的电脑上,用ipv6实现内网穿透,就相当于有一个4T的网络云盘了,随时随地就能访问了 就是说你只需要两台能联网的电脑设备就行了,一台用于你身边使用,另一台放到家里等,只要都能上网,就能使用ipv6点对点传输数据,不需要中间商赚差价
全栈程序员站长
2022/06/29
10K0
使用ipv6内网穿透,实现私有云盘搭建,实现远程控制等功能
windows,远程开机,远程唤醒(WOL,Wake-on-LAN)
远程唤醒技术(WOL,Wake-on-LAN) 是由网卡配合其他软硬件,通过局域网或广域网实现远程开机的一种技术,配合远程桌面软件的使用,可最大程度的为办公、家庭等的远程操作控制提供便利。这种技术非常适合具有远程网络管理要求的环境,如果有这种要求在选购网卡时应注意是否具有此功能。
全栈程序员站长
2022/09/05
5.5K0
windows,远程开机,远程唤醒(WOL,Wake-on-LAN)
一行脚本实现远程开机
平时出差,或者在公司上班,突然想用到家里电脑中的资料怎么办? 很简单, 提前在家里的电脑中运行『向日葵』等远程桌面软件就可以了。
全栈程序员站长
2022/08/22
1.8K0
一行脚本实现远程开机
通过广域网(Intelnet)进行远程唤醒[或开机] 图解
WAN远程唤醒与LAN远程唤醒有着诸多不同,WAN远程唤醒首先需要主板、网卡等硬件的支持,需要一条有效的Intelnet连接,与Lan远程唤醒不同的是,WAN远程唤醒需要经过路由器,因此下面我就来详细讲解如何在路由器上进行设置,以支持WAN远程唤醒,前提是,你已经成功进行了LAN远程唤醒。
全栈程序员站长
2022/09/05
5.5K0
在家搭建私有云存储!Windows下快速部署黑群晖虚拟机与远程访问指南
各位小伙伴们好!今天我要给大家带来一个超实用的教程——如何在Windows电脑上使用VMware17虚拟机安装黑群晖7.2系统。这不仅能让你们体验到高端NAS的乐趣,还能通过一些小技巧解决只能本地访问的小烦恼。当然啦,本教程仅供学习之用,长期使用的小伙伴还是建议支持正版哦!接下来就让我们一起来看看如何操作吧!
YY的秘密代码小屋
2025/04/01
4320
在家搭建私有云存储!Windows下快速部署黑群晖虚拟机与远程访问指南
教你NAS网络存储中如何实现外网访问
使用远程访问功能,你可以随时随地访问你的TNAS 设备,通过远程访问,你可以在家或在办公室以外的地方轻松访问TNAS。
xiao1
2020/12/22
5.9K0
记一次实现远程控制电脑开机过程
先说说为什么有这个想法,比如在游戏首发的时候,想远程控制电脑开始下载;想远程电脑查询电脑 上的资料等等。作为一名IT行业的从业者,在生活和工作中需要电脑的地方很多,我们不能无时无刻把电脑带在身边,但是现在我们身边无时无刻伴随着两样东西:蜂窝网络和手机。因为我的习惯不喜欢电脑长时间的开着,我不用我就关掉,而且我的电脑散热风扇风比较大,我觉得长时间开着影响室内空气质量,所以我就有了远程控制电脑开机的需求,使用蜂窝网络和手机来实现此需求便可以随时随地的控制。
晓晨
2020/10/29
2.9K0
记一次实现远程控制电脑开机过程
关机后远程唤醒的配置,简单实现广域网远程开机和连接
出门在外经常需要家里或者办公室电脑里面的资料。通常通过远程桌面等控制类软件连接。当家里没人,没人开电脑就麻烦了,如果让家里电脑始终开着浪费能源,所以远程桌面之前一定要实现远程开机才好。 实现远程开机需要硬件支持,并且做好相关设置。现在多数网卡都能实现远程唤醒功能,如果你的电脑太老,需要自行查看主板和网卡是否支持远程唤醒,电源是否符合ATX2.01的标准。 设置主要三方面:BIOS、系统设置、路由设置。 一、BIOS设置。不同的主板的CMOS略有差异。类似wake on lan\Remote Wake Up等等,请参看下主板说明书即可。我的是华硕主板,在APM Configuration中的 Power on by PCI devices,搞不清楚你的网卡是pci的还是pcie的,就把两个都打开。记得把能源之星给关掉,否则关机后,用于唤醒的设备会被彻底断电就无法远程唤醒了。我这里的是最后一项Energy Star 4.0C Support设置成disabled。
世纪访客
2018/08/02
4.7K0
关机后远程唤醒的配置,简单实现广域网远程开机和连接
如何让自己家里NAS硬盘的小电影不被发现?现在就教你涨知识了!
想必现在很多人都喜欢用NAS搭建一套家庭影音,毕竟现在NAS不贵,我也一样。由于NAS是通过公网进行访问,安全性则会成为一道考验,那么今天我就介绍一下我自己搭建的一套NAS是怎么做安全防护的。
ICT系统集成阿祥
2024/12/03
3810
如何让自己家里NAS硬盘的小电影不被发现?现在就教你涨知识了!
如何异地远程访问家中局域网内威联通NAS实现远程文件共享
本次教程主要介绍如何在QNAP威联通NAS上搭建SFTP服务,并通过cpolar内网穿透将其映射到公网上,实现在公网环境下也可以远程访问连接家里内网的威联通SFTP服务,无需公网IP,也不用设置路由器那么麻烦。
大海里的番茄
2024/06/21
5240
如何异地远程访问家中局域网内威联通NAS实现远程文件共享
使用NPS服务器内网穿透——实现远程访问外网电脑
使用NPS进行内网穿透——实现远程访问外部网络电脑 参考文档:https://ehang-io.github.io/nps/#/?id=nps 内网穿透搭建教程 NPS简介和实现原理 1、NPS简
宝耶需努力
2022/12/13
9.4K0
使用NPS服务器内网穿透——实现远程访问外网电脑
黑群晖常见问题集锦
答:群晖系统跟Windows不同,Windows有个盘要当成系统盘,而群晖会在每个硬盘上自动安装系统。每个硬盘?对,没错,就是每个硬盘。比如你是6盘位,接了6个硬盘,这6个硬盘初始化以后,每个硬盘都有系统了。所以拿一个SSD来做系统盘的这个做法没必要。当然,也有全部用SSD的土豪,那就不是这个话题了。
风吹屁屁凉
2021/07/14
12.2K0
10分钟就能搭建远程开发环境?你早点怎么不出现(#`n´)!
疫情严重的日子里,人们对远程办公的渴望达到了巅峰。但在经历了多次试错与崩溃后,才发现能有一款与自己合拍的远程编程工具是多么的重要啊!
博文视点Broadview
2020/06/11
9670
黑群晖安装和使用的常见问题及解决办法【不定期更新中】
答:群晖系统跟Windows不同,Windows有个盘要当成系统盘,而群晖会在每个硬盘上自动安装系统。每个硬盘?对,没错,就是每个硬盘。比如你是6盘位,接了6个硬盘,这6个硬盘初始化以后,每个硬盘都有系统了。所以拿一个SSD来做系统盘的这个做法没必要。当然,也有全部用SSD的土豪,那就不是这个话题了。
cnlixs
2022/11/01
60.3K2
黑群晖安装和使用的常见问题及解决办法【不定期更新中】
推荐阅读
相关推荐
为什么NAS需要内网穿透,如何给自建NAS做内网穿透
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验