我在沙箱Android N应用程序中定义了一个接收器:
<receiver
android:exported="true"
android:name="com.sandboxapplication.NetworkReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
这很简单:
public class NetworkReceiver extends BroadcastReceiver {
private static final String TAG = NetworkReceiver.class.getName();
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Received Network Change event.");
}
}
Run Code Online (Sandbox Code Playgroud)
如果在我的build.gradle文件中我的targetSdkVersion是23,那么这个接收器工作正常.但是,如果我将targetSdkVersion设置为24,接收器永远不会收到任何东西.事实上,如果我在我的接收器中放置一个调试断点,Android Studio会给我一个视觉指示,看起来它甚至从未加载到内存中.
我是否错过了Android N文档中非常基本的内容?有没有新的方法来检测连接变化事件?
我有一个pxe服务器,它托管Ubuntu 12.04的实时图像,我想在其上启用VNC.
通常我会使用以下命令执行此操作:
$ gsettings设置org.gnome.Vino启用true
但是,由于这个实时操作系统存在于RAM中,因此每次都需要在启动时执行此操作.问题是由于某种原因,它不适用于/etc/init.d /中的脚本...对于我的生活,我无法弄清楚为什么gsettings在这种情况下不起作用..
作为参考,这是我在/etc/init.d中使用的脚本:
#!/bin/bash
log=/var/log/gsettings.log
#Needed for some reason.. received info from http://stackoverflow.com/questions/10374520/gsettings-with-cron
sessionfile=`find "${HOME}/.dbus/session-bus/" -type f`
export $(grep "DBUS_SESSION_BUS_ADDRESS" "${sessionfile}" | sed '/^#/d')
set_gsettings()
{
echo "Inside set_gsettings" >> $log
#Enable vino
gsettings set org.gnome.Vino enabled true 2>&1 >> $log
gsettings set org.gnome.Vino prompt-enabled false 2>&1 >> $log
}
case "$1" in
start)
echo "Inside IT-gsettings" >> $log
set_gsettings
;;
restart|reload|force-reload)
/etc/init.d/IT-gsettings start
;;
stop)
:
;;
*)
log_success_msg "Usage: /etc/init.d/IT-gsettings {start|stop|restart|reload|force-reload}"
exit 1 …
Run Code Online (Sandbox Code Playgroud)