天道酬勤,学无止境

没有“使用使用数据的应用程序”或 android.settings.USAGE_ACCESS_SETTINGS 意图的设备(Devices without “Apps using Usage Data” or android.settings.USAGE_ACCESS_SETTINGS intent)

问题

背景: Android 5 引入了一个新的 UsageStats API,可用于查询使用不同应用程序的时间。 此 API 在多个应用程序中用于检测当前的前台应用程序(如在几个问题中所讨论的,像这样),但是:

该API需要android.permission.PACKAGE_USAGE_STATS权限,该权限是系统级权限,不会授予第三方应用。 但是,声明权限意味着使用 API 的意图,设备用户可以通过设置应用程序授予权限。

由于未向用户提供权限,应用程序使用带有操作 android.settings.USAGE_ACCESS_SETTINGS 的意图将用户发送到设置。 但有时甚至无法使用此设置:

在某些情况下,匹配的 Activity 可能不存在,因此请确保您对此加以防范。

这意味着在这些手机中,几乎不可能访问使用情况统计信息。

这已经在其他问题中讨论过,比如这里和这里。 显然,一些制造商决定从某些设备(特别是三星和 LG,但也可能是其他设备)中删除该功能。

问题:此问题的目的是收集有关不允许访问这些设置的设备的信息。 请发布您发现是这种情况的品牌、型号和操作系统版本。 此外,如果有人可以找到访问使用情况统计信息的替代方法,如果您分享它,对其他人会有所帮助。

请避免指向已弃用的 API,例如 getRecentTasks 或 getRunningAppProcesses(通常返回具有优先前景的多个包),或指向如何配置Manifest文件。

回答1

我将从我已确认不回答意图的列表开始:

Model                     OS version
Samsung Galaxy Note 3     5.0
Samsung Galaxy S4         5.0.1
Samsung Galaxy Note S4    5.0.1
Samsung Galaxy S5         5.0
Samsung Galaxy S5 CDMA    5.0
Meizu m2 note             5.1
Samsung Galaxy S5         5.0
OnePlus One               5.0.2
Meizu MX4                 5.0.1

此外,我们的一些用户抱怨:

LG G3                     5.0

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • centos7 下安装mysql的 正确姿势
    这里记录一下我安装mysql的过程,尝试了很多次,不对的地方请多指教! 首先保证centos能连上外网 第一大步:检查是否已安装过mysql rpm -qa |grep -i mysql 如果已安装mysql,又需重新按安装新版版,需要完全卸载旧版本的mysql,参考资料: https://www.jianshu.com/p/ef58fb333cd6 第二大步:配置yum源为国内镜像 还要确保yum 安装源使用国内镜像,这样下载资源时候快一点,centos配置yum国内镜像源方法参考: https://www.fujieace.com/linux/yum-repos-d.html 第三大步:安装mysql 1.创建一个文件夹用于存放从网上下载的mysql相关的rmp安装包,这个文件夹名字随便取比如我叫mysqlinstalls,并转到mysqlinstalls目录下 [root@localhost ~]# mkdir mysqlinstalls [root@localhost ~]# cd mysqlinstalls 2.下载mysql各个组件,依次执行下面命令: wget http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-community-server-5.7.29-1.el7.x86_64.rpm
  • Delphi 运行时错误信息表
    Delphi 运行时错误信息表 错误信息形式为: Run-time error nnn at xxxx; 其中nnn是运行时的错误编号; xxxx是运行时的错误地址. 编号 说明 I/O错误: (编号100-149) 100 磁盘读错误,若要对超过格式文件尾进行读取时 101 磁盘写错误,若磁盘满时,由CloseFile,Write,Writeln或Flush报告 102 没有指定文件,若文件变量没有由Assign或AssignFile赋值,由Reset, Rewrite,Append,Rename和Erase报告 103 文件没有打开,若文件未打开,由CloseFile,Read,Write,Seek,Eof, FilePos,FileSize,Flush,BlockRead或BlockWrite报告 104 输入文件未打开,由Read,Readln,Eof,Eoln,SeekEof或SeekEoln报告有关输入的文 105 输出文件未打开,由Write和Writeln报告有关文本文件没有用Console应用程序生成 106 无效的数据格式,由Read或Readln报告从文本文件读取的数据格式不正确 致命错误: (编号200-255) 200 被零除 201 范围检查错误 202 栈上溢 203 栈上溢错误 204 无效的指针操作 205 浮点上溢 206 浮点下溢 207
  • MySQL错误代码
    常见:1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1016:文件无法打开,使用后台修复或者使用phpmyadmin进行修复。1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字重复,更改记录失败 1023:关闭时发生错误 1024:读文件错误 1025:更改名字时发生错误 1026:写文件错误 1032:记录不存在 1036:数据表是只读的,不能对它进行修改 1037:系统内存不足,请重启数据库或重启服务器 1038:用于排序的内存不足,请增大排序缓冲区 1040:已到达数据库的最大连接数,请加大数据库可用连接数 1041:系统内存不足 1042:无效的主机名 1043:无效连接 1044:当前用户没有访问数据库的权限 1045:不能连接数据库,用户名或密码错误 1048:字段不能为空 1049:数据库不存在 1050:数据表已存在 1051:数据表不存在 1054:字段不存在 1065:无效的SQL语句,SQL语句为空 1081:不能建立Socket连接 1114:数据表已满,不能容纳任何记录
  • MySQL错误代码
    常见:1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1016:文件无法打开,使用后台修复或者使用phpmyadmin进行修复。1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字重复,更改记录失败 1023:关闭时发生错误 1024:读文件错误 1025:更改名字时发生错误 1026:写文件错误 1032:记录不存在 1036:数据表是只读的,不能对它进行修改 1037:系统内存不足,请重启数据库或重启服务器 1038:用于排序的内存不足,请增大排序缓冲区 1040:已到达数据库的最大连接数,请加大数据库可用连接数 1041:系统内存不足 1042:无效的主机名 1043:无效连接 1044:当前用户没有访问数据库的权限 1045:不能连接数据库,用户名或密码错误 1048:字段不能为空 1049:数据库不存在 1050:数据表已存在 1051:数据表不存在 1054:字段不存在 1065:无效的SQL语句,SQL语句为空 1081:不能建立Socket连接 1114:数据表已满,不能容纳任何记录
  • 联合中的大括号或相等初始化器(brace-or-equal-Initializer in unions)
    问题 相关:如何在 Union 中初始化非 POD 成员 标准说 联合的最多一个非静态数据成员可以有一个大括号或等号初始化器。 但 struct Point { Point() {} Point(int x, int y): x_(x), y_(y) {} int x_, y_; }; union U { int z; double w; Point p = Point(1,2); }; #include <iostream> int main () { U u; std::cout << u.p.x_ << ":" << u.p.y_ << std::endl; } 打印4196960:0而不是预期的1:2 。 我认为这是一个编译器错误。 是这样吗? 回答1 C++11 [class.ctor]/5 声明: 对于A类默认构造函数X是类的构造函数X ,可以不带参数调用。 如果类X没有用户声明的构造函数,则没有参数的构造函数被隐式声明为默认值 (8.4)。 隐式声明的默认构造函数是其类的inline public成员。 在以下情况下,类X默认默认构造函数被定义为已删除: X是一个类似联合的类,它有一个带有非平凡默认构造函数的变体成员, 任何没有大括号或等号初始值设定项的非静态数据成员都是引用类型, 任何没有大括号或等号初始值设定项的 const 限定类型(或其数组
  • 什么时候私有构造函数不是私有构造函数?(When is a private constructor not a private constructor?)
    问题 假设我有一个类型,并且想将其默认构造函数设为私有。 我写以下内容: class C { C() = default; }; int main() { C c; // error: C::C() is private within this context (g++) // error: calling a private constructor of class 'C' (clang++) // error C2248: 'C::C' cannot access private member declared in class 'C' (MSVC) auto c2 = C(); // error: as above } 伟大的。 但是后来,构造函数变得不像我想象的那样私有: class C { C() = default; }; int main() { C c{}; // OK on all compilers auto c2 = C{}; // OK on all compilers } 这使我感到非常惊奇,意外和明显不受欢迎的行为。 为什么这样可以? 回答1 诀窍在C ++ 14 8.4.2 / 5 [dcl.fct.def.default]中: ...如果函数是由用户声明的,并且未在其第一个声明中明确地默认或删除,则由用户提供。
  • 什么是聚合和POD,它们为何/为什么特别?(What are Aggregates and PODs and how/why are they special?)
    问题 该常见问题是关于聚合和POD的,涵盖以下材料: 什么是骨料? 什么是POD (普通旧数据)? 它们有什么关系? 它们如何以及为什么如此特别? C ++ 11有什么变化? 回答1 如何阅读: 本文相当长。 如果您想了解聚合和POD(普通旧数据),请花一些时间阅读。 如果您仅对聚合感兴趣,则仅阅读第一部分。 如果仅对POD感兴趣,则必须首先阅读POD的定义,含义和示例,然后您可以跳至POD,但我仍建议您完整阅读第一部分。 聚合的概念对于定义POD至关重要。 如果您发现任何错误(即使是次要错误,包括语法,文体,格式,语法等),请留下评论,我会进行编辑。 此答案适用于C ++ 03。 有关其他C ++标准,请参见: C ++ 11的变化 C ++ 14的变化 C ++ 17的变化 什么是集合体以及为什么它们很特殊 来自C ++标准( C ++ 03 8.5.1§1 )的形式定义: 集合是没有用户声明的构造函数(12.1),没有私有或受保护的非静态数据成员(第11章),没有基类(第10章)以及没有虚函数(10.3)的数组或类(第9节)。 )。 好了,让我们来分析一下这个定义。 首先,任何数组都是聚合。 如果……等一下,一个班级也可以是一个集合。 关于结构体或联合体,什么也没说,难道它们不是聚集体吗? 是的他们可以。 在C ++中,术语“ class是指所有类,结构和联合。 因此
  • 如何安装要在 ipython 中使用的 pyodbc(How to install pyodbc to be used in ipython)
    问题 我很困惑。 我已经在我的电脑上安装了 pyodbc,我可以使用其他 IDE 导入它,但我是 ipython 的新手。 我使用 Ananconda ,并且能够使用类似的东西安装其他库 pip install BeautifulSoup 但是当我使用 pyodbc 这样做时 pip install pyodbc 我有错误: error: command 'gcc' failed with exist status 1 C:\Users\jeannie.chirayu>pip install pyodbc 下载/解压 pyodbc 您正在安装一个可能不安全且无法验证的文件。 pip 的未来版本将默认禁止不安全的文件。 下载 pyodbc-3.0.7.zip (85kB): 85kB 下载运行 setup.py egg_info 包 pyodbc warning: no files found matching 'tests\*' 安装收集的包:pyodbc 运行 setup.py install for pyodbc 构建 'pyodbc' 扩展 C:\Anaconda\Scripts\gcc.bat -DMS_WIN64 -mdll -O -Wall -DPYODBC_VERSION=3.0.7 -IC:\Anaconda\include -IC :\Anaconda\PC
  • 没有 id 或 name 的 Spring bean(Spring bean with no id or name)
    问题 我正在审查一些 Spring 代码,我看到一些没有 id 或名称的 bean defs。 做这件事的人不在身边问。 该应用程序运行良好。 我不熟悉这必然意味着什么。 有人知道这是否意味着什么特别的事情吗? 回答1 某些 bean 不需要被上下文文件中的其他 bean 或以编程方式访问。 因此,正如 JacobM 所提到的,它们不需要 id 或名称,因为它们没有被引用。 此类示例是 PropertyPlaceholderConfigurer,它读取属性文件,然后允许在上下文定义中替换运行时属性。 示例定义将是 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="myapp.properties" /> </bean> JavaDoc 提供了关于此对象的更多文档,但在文件中,您可以通过仅使用标准模板替换占位符 ${...} 来引用文件中的属性。 回答2 一种可能性是您可以就地定义一个 bean,因此您不需要 id,因为您不需要从其他任何地方引用它。 假设我有一个带有 Bar 属性的 Foo 对象: <bean id="foo" class="Foo"> <property name="bar">
  • 是否有没有“null”的语言?(Are there languages without “null”?)
    问题 许多人认为特殊值null的概念(因为它在 C、Java、C#、Perl、Javascript、SQL 等语言中使用)是一个坏主意。 在 SO 和 P.SE 上有几个关于此的问题,例如没有空值的语言的最佳解释和空引用真的是一件坏事吗? . 但是,我找不到没有它们的任何语言。 我熟悉的所有语言都有null或类似的东西(例如 Perl 中的“未定义”)。 我意识到可能每种语言都需要某种方式来表达“缺乏价值”。 然而,除了使用“null”或“undefined”,这也可以通过使用诸如 Maybe (Haskell) 或 Optional (Guava) 之类的东西来明确表示。 与“null”或“undefined”的主要区别在于,如果对象具有特定类型(Maybe、Optional...),则该对象只能具有“无值”。 相比之下,“null”/“undefined”通常是每个类型可能的有效值。 在这个意义上,是否有没有“null”或类似概念的语言? 回答1 这是一个不完整的 null-safe 语言列表,因为它们没有任何不可为 null 的类型: C# 8 (2019):选择加入“可为空引用类型”。 Kotlin (2015):有可选类型? 句法。 小马 (2015)。 使用联合类型,其中一种类型是None 。 Swift (2014):有可选类型? 句法。 Crystal (2014)
  • 在哪里可以找到标准容器和算法的所有例外保证?(Where can I find all the exception guarantees for the Standard Containers and Algorithms?)
    问题 是的,我研究了可以找到的C ++标准(或草案),但没有找到STL容器提供的任何全面的异常保证。 所有我能看到的是与一些对某些类型的功能不完整的描述偶尔的部分。 也许它在那里,但我不知道,我不知道。 注意:我并不是要列出人们可以想到的所有担保,这基本上就是这个问题。 我正在寻找此信息本身的权威来源-或最好是该来源的免费版本(例如,标准草案),在此我或多或少可以将其视为官方。 回答1 阅读标准可能会让人感到恐惧(让我们回到标准),但是Bjarne Stroustrup在他的《 C ++编程语言》一书中对此主题写了一个非常不错的附录。 他将此附录发布在 http://www.stroustrup.com/3rd_safe0.html,网址为http://www.stroustrup.com/3rd_safe.pdf 它很长很详细(写得很好)。 例如,您可能会发现有趣的E.4节,引用: E.4标准集装箱保证如果库操作本身引发异常,则它可以并且确实要确保对其进行操作的对象处于定义良好的状态。 例如,at()为向量抛出out_of_range(第16.3.3节)对于vector的异常安全性不是问题。 at()的编写者在抛出向量之前确保向量处于良好定义的状态没有问题。 此外,第E.4.1节规定 除了基本保证之外,标准库还为一些插入或删除元素的操作提供了有力的保证。 请参阅第956页
  • 没有功能或JSON的JavaScript大括号(JavaScript curly braces with no function or json)
    问题 刚打开客户端的javascript文件,第一行内容如下: { var s_account="blog"; } 我不明白。 通常,以我的经验,花括号环绕一个函数... function welcome(){ ... ...或 json JavaScript对象 var attributes = { this : "that... 谁能告诉我为什么在花括号之前或之后没有文本? 它有什么作用/意义何在? 回答1 谁能告诉我为什么在花括号之前或之后没有文本? 它有什么作用/意义何在? 在Javascript中对它们没有任何意义。 它的行为与代码只是 var s_account="blog"; Speculation 在其他具有块作用域的语言中,这可能会限制变量的作用域,但是由于JS不具有该功能(无论好坏),因此没有控件结构或函数的花括号本质上是没有意义的,因此会被忽略。 此代码很可能是从已删除的函数或if语句中遗留下来的。 绝对不是要复制的模式。 回答2 这是一个块,并且完全没有意义,除非您将其标记为: block: { var s_account="blog"; console.log("executed"); break block; console.log("not executed"); } 回答3 在我看来,做这样的事情的唯一合乎逻辑的理由是作为一种组织技术。
  • 如果没有匿名类方法,为什么我们不能在Java中实例化接口或抽象类?(Why can't we instantiate an interface or an abstract class in java without an anonymous class method?)
    问题 我知道,除了使用匿名类方法外,我们无法在Java中实例化接口或抽象类,但是其背后的原因是什么? 回答1 您不能实例化接口或抽象类,因为它会违背面向对象的模型。 接口代表合同-接口实现者将能够做所有这些事情,履行合同的承诺。 抽象类是一个类似的想法,因为它们表示未履行的合同,是能够做事的承诺,除了与接口不同,它们定义了一些功能或字段,但在使用前需要进行填充。 简而言之,在一个好的面向对象程序中,您永远不要想实例化一个抽象类或接口。 如果这样做,则设计可能是错误的。 (匿名类实际上是非抽象的实例化,只是它们不需要命名,因此它们看起来像是“原始接口”,但实际上是没有名称的接口的实现。这就是我的理解。 , 至少。) 回答2 这是没有更深层次概念的基本解释。 Interface没有实现任何方法,因此没有实例化它的目的,因为调用方法时不会发生任何事情 Abstract类可以具有abstract方法声明,就像没有实现的接口方法一样。 回答3 您无法实例化接口或抽象类,因为它们的某些方法可能没有任何定义。
  • 删除构造函数的C ++ 14值初始化(C++14 value-initialization with deleted constructor)
    问题 我有些误会: 让我们将struct A的默认构造函数标记为已删除: struct A { A() = delete; }; 下一条指令格式正确,这有什么作用?: A a{}; 从cppreference值初始化: 1)如果T是没有默认构造函数或用户提供的默认构造函数或已删除的默认构造函数的类类型,则该对象将被默认初始化。 但是默认初始化的效果是: 如果T是类类型,则调用默认构造函数以提供新对象的初始值。 还是聚合初始化? 谢谢! 回答1 您的struct A为: 具有以下内容的类类型: 没有用户提供的构造函数1 , 没有私有或受保护的非静态数据成员, 没有基类, 没有虚拟成员函数。 因此,根据§8.5.1 / 1提供的定义,它有资格作为聚合类型。 然后是聚合初始化优先于值初始化。 该标准说,聚合初始化优先于值初始化(草案N3936,第8.5.4 / 3节,第201页)(强调我的) 对象或类型T的引用的列表初始化定义如下: 如果T是一个聚合,则执行聚合初始化(8.5.1)。 否则,如果初始化器列表中没有元素,并且T是具有默认构造函数的类类型,则该对象将被值初始化。 [...更多规则...] (1)如注释中所要求的那样,为什么删除的构造函数不算作用户定义,这是标准所说的内容(草稿N3936,第8.4.2 / 5节,第198页): 如果函数是由用户声明的
  • 在没有虚拟方法或超类的类中,假设(第一个成员变量的地址)== this 是否安全?(In a class with no virtual methods or superclass, is it safe to assume (address of first member variable) == this?)
    问题 我制作了一个私有 API,它假设类中第一个成员对象的地址与类的 this 指针相同……这样成员对象就可以轻松地派生出一个指向它是一个对象的指针的成员,而不必显式存储指针。 鉴于我愿意确保容器类不会从任何超类继承,不会有任何虚方法,并且执行此技巧的成员对象将是声明的第一个成员对象,该假设是否成立对任何 C++ 编译器都有效,还是我需要使用 offsetof() 运算符(或类似运算符)来保证正确性? 换句话说,下面的代码在 g++ 下做了我所期望的,但它可以在任何地方工作吗? class MyContainer { public: MyContainer() {} ~MyContainer() {} // non-virtual dtor private: class MyContained { public: MyContained() {} ~MyContained() {} // Given that the only place Contained objects are declared is m_contained // (below), will this work as expected on any C++ compiler? MyContainer * GetPointerToMyContainer() { return reinterpret_cast
  • 如何使没有内容的div具有宽度?(How to make a div with no content have a width?)
    问题 我正在尝试向div添加宽度,但我似乎遇到了问题,因为它没有内容。 这是我到目前为止的 CSS 和 HTML,但它不起作用: CSS body{ margin:0 auto; width:1000px } ul{ width:800px; } ul li{ clear:both; } .test1{ width:200px; float:left; } HTML <body> <div id="test"> <ul> <li> <div class="test1">width1</div> <div class="test1">width2</div> <div class="test1">width3</div> </li> <li> <div class="test1"></div> <div class="test1">width2</div> <div class="test1">width3</div> </li> <li> <div class="test1"></div> <div class="test1">width2</div> <div class="test1">width3</div> </li> </ul> </div> 回答1 div 通常至少需要一个不间断的空格 ( ) 才能具有宽度。 回答2 使用padding 、 height或
  • Tomcat 在没有任何日志或任何堆栈的情况下停止(Tomcat stopped without any log or any stack)
    问题 我们在使用 Tomcat 5.5 时遇到了问题,它在我们的生产服务器 (Linux CentOS 4.8) 上晚上停止,我们不知道它为什么停止...... catalina.out 中没有 Tomcat 的日志或任何应用程序的日志。 我们尝试了不同的方法来找出服务器停止的原因: 配置 Tomcat 以生成核心转储使用 javassist 检测System.exit()方法以查找该方法是否被调用向 JVM 添加关闭钩子(使用Runtime.getRuntime().addShutdownHook() ) 他们都没有工作,我们没有核心转储,没有调用 Exit 方法和关闭钩子。 我的结论是: 虚拟机未正确终止,但在没有任何日志的情况下崩溃。 任何想法或日志阅读以找出Tomcat停止的原因? 回答1 1) 确保您知道 stderr 被重定向到哪里,并检查那里是否打印了任何内容。 2)查看Tomcat的内存限制以及系统有多少空闲内存。 查看 /var/log 下的 Linux 系统日志,看看在此期间是否发生了任何可疑的事情。 例如,如果系统内存不足,内核可以随机杀死一个进程(几乎)而不留痕迹。 FWIW,我们已经在生产中运行 5.5 多年,从未发生过任何无法解释的停机。 回答2 这对我有用。 正如其他答案中所建议的那样,检查系统日志在/var/log/messages但我的权限被拒绝。
  • 有效请求但数据为空的正确REST响应代码是什么?(What is the proper REST response code for a valid request but an empty data?)
    问题 例如,您为users/9运行GET请求,但是没有ID为#9的用户。 最好的响应码是哪一个? 200 OK 202接受 204没有内容 400错误的要求找不到404 回答1 TL; DR:使用404 请参阅此博客。 它解释得很好。 博客对204的评论摘要: 204 No Content并不是非常有用的浏览器响应代码(尽管根据HTTP规范,浏览器确实需要将其理解为“不要更改视图”响应代码)。 204 No Content然而,为此可能要表示成功,而不必返回一些AJAX的Web服务是非常有用的。 (特别是在不需要反馈的情况下,例如DELETE或POST )。 因此,对您的问题的答案是在您的情况下使用404 。 204是一个专门的响应代码,您不应该经常响应GET返回到浏览器。 其他响应代码甚至比204和404更不合适: 成功获取的任何内容都应返回200 。 当您要获取的实体不存在时,此方法不合适。 服务器开始对某个对象进行工作但该对象尚未完全准备就绪时,使用202 。 当然这里不是这样。 您尚未开始也不会开始响应GET请求构造用户9。 这违反了各种规则。 400用于响应格式不正确的HTTP请求(例如,格式不正确的HTTP标头,顺序错误的段等)。 几乎可以肯定,这将由您使用的任何框架来处理。 除非您是从头开始编写自己的服务器,否则不必处理这个问题。 编辑
  • 使用没有 XIB 的 Cocoa Bindings 填充 NSTableView 或 NSCollectionView(Populating a NSTableView or NSCollectionView using Cocoa Bindings without XIBs)
    问题 我想将我的NSTableView或NSCollectionView绑定到由NSArrayController或NSArray属性组成的数据源。 但是,我希望在代码中执行此操作,因为出于各种技术原因,我的 UI 中没有 XIB。 由于 Apple 没有提供任何有关如何执行此操作的文档,因此我正在寻找规范的答案,以便很好地说明应该如何执行此操作。 答案是使用 Objective-C 还是 Swift 并不重要。 这是不起作用的: contactsTableView.bind(NSContentBinding, toObject: myViewModel, withKeyPath: "contacts", options: nil) “联系人”是带有字符串的 NSArrayController 或 NSArray。 回答1 您需要绑定到NSArrayController ,而不仅仅是NSArray因为您几乎肯定希望通过数组元素绑定到它们的属性,而NSArray不支持。 绑定建立在键值观察之上,您不能通过数组或集合来观察键值。 此外,数组控制器通常是模型-视图-控制器中控制器层的一部分。 因此,“联系人”可能是命名myViewModel属性的关键路径并且也是数组控制器是没有意义的。 它应该是视图或窗口控制器的属性。 如果你的表视图是基于NSCell的
  • 没有提交按钮或 JavaScript 的 html 提交(html submit without submit button or JavaScript)
    问题 目前我有一个简单的表格,上面有加号和减号,中间有一个值。 我试图在加号和减号下创建一个 href 链接来调用 self 但要么指示使用了哪个链接(加号或减号),要么在递增或递减后传递值。 我不想使用 JavaScript/客户端脚本,因为有些浏览器不允许,但我使用的是 PHP。 我也不想使用 $_GET,因为其他数据需要发送到“self”,所以我使用的是 $_POST。 欢迎任何想法。 代码片段 var_dump($_POST); < form action="?" method="post" action="Submit" > < input type="hidden" id="currentvalue" name="currentvalue" value="2" / > < div class="minus" >< a href="" onclick="document.forms[0].submit();return false;" > - < /a > < /div > < div class="currentvalue">'.$_POST["currentvalue"].'< /div > < div class="plus"> + < /div > 谢谢 回答1 如果不使用button或input type=image/submit元素或 JS,则无法提交