从4.3开始,Android有一个新的通知侦听器服务:http : //developer.android.com/about/versions/jelly-bean.html http://developer.android.com/reference/android/service/notification/NotificationListenerService. HTML
来自文档:
默认情况下禁用通知访问 - 应用程序可以使用新的Intent将用户直接带到Settings以在安装后启用侦听器服务.
我没有在任何地方看到发射的意图.仔细阅读"设置"文档似乎没有帮助:http: //developer.android.com/reference/android/provider/Settings.html
直接查看Settings类:https: //android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/provider/Settings.java
我看到ACTION_NOTIFICATION_LISTENER_SETTINGS已定义,但在使用Android Studio并指向4.3 ACTION_NOTIFICATION_LISTENER_SETTINGS时无法解析:
Intent intent = new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
Run Code Online (Sandbox Code Playgroud)
尝试更多手动似乎不起作用:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "android.settings.NOTIFICATION_LISTENER_SETTINGS");
Run Code Online (Sandbox Code Playgroud)
编辑:正如CommonsWare指出的那样正确地做到这一点:
Intent intent=new Intent("android.settings.NOTIFICATION_LISTENER_SETTINGS");
Run Code Online (Sandbox Code Playgroud)
导致崩溃:
(android.content.ActivityNotFoundException:找不到处理Intent的Activity {act = android.settings.NOTIFICATION_LISTENER_SETTINGS})
我错过了什么吗?我不确定如何将用户发送到正确的设置屏幕以在我的应用程序中启用此服务.
我已经创建了一个几乎完整的实用程序应用程序,但现在我有一点我真的必须坚持数据.
由于XCode仅在导航或基于窗口的应用程序中提供核心数据模板,是否有一种简单的方法可以将核心数据添加到我的应用程序中?我从未使用过Core Data,只需要保存460个字符的消息和联系人名称,将其作为发送消息的历史记录.
或者我应该从一个新的基于Window的应用程序开始,包括.Core Data并尝试手工构建Utility/Flipside Part?
有人可以建议我最适合我的情况吗?
我将命令行参数传递给我的Lisp程序,当它们点击我的main函数时,它们的格式如下:
("1 1 1" "dot" "2 2 2")
Run Code Online (Sandbox Code Playgroud)
我有一个点函数(它接受两个向量作为参数),并希望直接从参数中调用它,但这是不可能的,因为像(funcall(second args)...)接收"点"而不是点作为函数名称.
我试过这个功能的变种:
(defun remove-quotes (s)
(setf (aref s 0) '""))
在意识到引号不是字符串的一部分之前无济于事.有没有一种简单的方法可以做到这一点,或者我应该检查每个字符串然后调用适当的函数?
我希望在我的Java应用程序中使用Observable包装经过身份验证的调用,如果有必要,我会在发出请求之前重新授权我的用户.我使用Shape Code博客中的这种方法在Objective-C中使用ReactiveCocoa做了类似的事情:
- (RACSignal *)doRequestAndRefreshTokenIfNecessary:(RACSignal *)requestSignal {
return [requestSignal catch:^(NSError *error) {
// Catch the error, refresh the token, and then do the request again.
BOOL hasRefreshToken = [UserManager sharedInstance].refreshToken != nil;
BOOL httpCode401AccessDenied = error.code == -1011;
if (httpCode401AccessDenied && hasRefreshToken) {
NSLog(@"Will attempt to refresh access token.");
return [[[self refreshToken] ignoreValues] concat:requestSignal];
}
return requestSignal;
}];
}
Run Code Online (Sandbox Code Playgroud)
RACSignal是一个Observable的ReactiveCocoa模拟.此方法创建一个RACSignal,它将捕获初始请求发出的任何错误,如果该错误与给定条件匹配(在这种情况下,拒绝访问并且有可用的auth令牌),则会透明地触发新的RACSignal以使用刷新令牌然后重新发送原始信号.
RxJava是否提供类似的设施?我catch:在Combining Observables文档中找不到类似的东西.
我有一个小脚本,旨在将 Google Music 上的 favicon 从 Play Store 图标更改为实际可识别为与音乐相关的内容:
// ==UserScript==
// @name Update Google Music Favicon
// @version 1.0
// @description Replaces Google Music icon with something almost like the old one but much uglier.
// @include http://play.google.com/music/*
// @include https://play.google.com/music/*
// ==/UserScript==
window.addEventListener('load', function() {
a=document.createElement("link");
a.setAttribute("type", "image/jpeg");
a.setAttribute("rel", "icon");
a.setAttribute("href","data:image/jpeg;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAEEzUgBwUwAAQjo+EHlnZnF7aWhzWlBQEkE8Owx/c3JrinZ1d1hPVRb/rkAALjhpAAAAAAAAAAAAAAAAADoABwBnwP8AXKD/IkxytqZqYVn1dGRj9k9GRkM2NDMzcGZl74Rwb/lRf6uwRqz5LHTy/wAlDxgAAAAAAAAAAABzuuYAdKGpDEqX/6coY8L/YVpN/2RbWvtBOztNLy8vP2ZfXvd6Z1z/MnSt/zif/7U4X6gSQonhAAAAAAAAAAAAac//AFmn30kqp//0EWG4/2pcT/9hWlr7PTg4TS8vL0BjXl73e2dc/x5fpP8Vf/r5LHTHWTGF+QAAAAAAAgAAABvJ/wAWl+R3AaH3/xl7uP+EcGn/YVxb+zQwME0xMTFAY2Bf93pnXf8cVp7/AHv5/w1/44wJrv8AAgUAAAN+4wADZbkSAJv8twCU+f8ccrX/kHx7/2toaPs1MjJNMzMzQGZjaPd1Zlz/HU+U/wCG9P8Brf7JA4XQHQCn/wAA//8AGZntcg6X/vwMkfr/HH6+/4l6c/90bm77Q0FBTTQzM0BqaGj3gXFp/x51pf8Jm/n/D6P8/wWx/4hBAAACU1CUB0uy9bIacLvlS6/0lymLve6CeHP/dXV0+zc3Nks7Ozs+gICA9ot8e/8hiKj1O8T8niSAueAbsPTDE3nPDw+M/wAmf91oDFOwaa3//wxakrV3Z2hj1W1oaNk8PDwwXV1dJIiIiNFwcGvbVYicgpP//xMWZaJfGI7XeAjn/wAAsf8AI4Tnbxpr02gTo/8AJgoAAl5aUyBqamohY2NjA4WFhQKIiIgecGxqIjkZCQMQs/8AHonLWhOx+YG/AAABJV+4DiiZ/8Ilk/zLElS8GBR5+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWlNwAF2KYEBq1970gyv/SEZHVGDcAAAIMeP+PGor//xeC9YcELHYIDGbeAAAAAAAAAAAAAAAAAAAAAAALpMgAADUxBBLK9XQTxP/8Dqb8ohVIjwYReP8AGGTbJg1w99MKdf/4DJL2lhCz0CwJb3QH/wAAAAD//wA0WEMFEq3MJArH+IYIzP/yCbv63wuK5jIKr/8AP0iaAACq/wAhWuRBEYr62Qmx/v8KsP/kDL7/sQfK/5AZuuuNE8P7rAq9/98IwP7/C8T/4Q64/k8A//8AEYfBAAAAAABQeNcAAP//ACqn7y8grPunFav+7wiq//8FrP//Ba7//wey//8Rt//yFrr7sBjC/zgiAAAAIK/9AAAAAAAAAAAAAAAAAK2BxAA/uf8AUqzwCjy0+UA1tfyBMLb8pSy2/KYruPuFLbr5Ri+w7g0q3v8AYUuiAAAAAAAAAAAA8A8AAOAHAADAAwAAwAMAAMADAACAAQAAgAAAAAAAAACAAQAAkAgAAA/wAAAH4AAAgIEAAMADAADgAwAA8A8AAA==");
document.documentElement.firstChild.appendChild(a);
}, false);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎不起作用,即使我在 JS 控制台中输入它。我试过用 Stack Overflow favicon URL 替换它,但这也不起作用,但将其切换到 google.com/favicon.ico 工作 - 我猜问题是 favicon 不是来自同一个域? 有没有解决的办法?我在调试控制台中看不到任何有用的东西。
我要连接的网址是:https : //play.google.com/music/listen?u=0#/now
我正在 fork 上尝试一些简单的代码。当我给出这样的代码时,它工作得很好。它将打印
我就是孩子
我是家长
然后等待30秒。我知道这是由于这两个进程之间的切换造成的。第一个孩子执行,然后是父母,然后是孩子......
#include<stdio.h>
#include<stdlib.h>
main()
{
int pid;
pid=fork();
if(pid==0)
{
printf("\nI am the child\n");
sleep(30);
exit(0);
}
if(pid>0)
{
printf("\nI am the parent\n");
wait();
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我给予喜欢时(无需父母等待)
#include<stdio.h>
#include<stdlib.h>
main()
{
int pid;
pid=fork();
if(pid==0)
{
printf("\nI am the child\n");
sleep(30);
exit(0);
}
if(pid>0)
{
printf("\nI am the parent\n");
}
}
Run Code Online (Sandbox Code Playgroud)
它只是打印
我就是孩子
我是家长
并退出(无需等待 30 秒)。
那么是因为没有等待调用父进程退出而子进程仍在执行吗?但为什么它没有出现在终端(等待)?
父母在这里会变成僵尸吗?
android ×1
cocoa-touch ×1
common-lisp ×1
core-data ×1
fork ×1
iphone ×1
javascript ×1
linux ×1
lisp ×1
process ×1
rx-java ×1
string ×1
unix ×1
userscripts ×1