最近做了个demo,用到广播,目的是监听蓝牙连接是否断开。断开时,弹出对话框告知已断开。
开始的时候当连接断开时发出警告用的是AlertDialog,这个东西必须是由activity创建,而我有多个activity。于是就悲催的在N个Activity里注册and销毁receiver(这是有多彪啊)。。。。
而当你真正收到连接断开的时候其实早800年前就被断开了,这个时间差内,再读写之类的会有异常,这时就要有自定义广播~~于是我凌乱了。
凌乱之后,又自定义过滤器,静态注册接收器。这时AlertDialog的问题出现了。我又不淡定了,又是一阵凌乱后,发现再写个activity设置成dialog,再设置透明神马的不就OK(之前是有多蠢啊)。当收到广播的时候转到alertactivity,为了避免多次弹出对话框,在AndroidManifest.xml里设置了单例。
本以为这就完了,但是发现这个静态注册的广播在进程都kill了还在那给我提示,疯了。。。
各种去 groups.google上搜贴无果后各种看api,发现AndroidManifest中receiver里的enable属性,属性描述如下:
Whether or not the broadcast receiver can be instantiated by the system — "true" if it can be, and "false" if not. The default value is "true".The <application> element has its own enabled attribute that applies to all application components, including broadcast receivers. The <application> and <receiver> attributes must both be "true" for the broadcast receiver to be enabled. If either is "false", it is disabled; it cannot be instantiated.
水平太烂凑活瞎理解吧。。想着干脆得到PackageManager后直接把application的enable制成false,结果是收不到广播了,程序也再启动不起来了(这个应该可以解决,下面再说)。。,无奈~
继续看,看到setComponentEnabledSetting,描述如下:
Set the enabled setting for a package component (activity, receiver, service, provider). This setting will override any enabled state which may have been set by the component in its manifest.
觉得可行就,先得到receiver这个组件后把他的enable制成false,广播关闭了。but下次程序启动的时候广播木有了,真的木有了啊~~~百思不得其解
最终把AndroidManifest里receiver的enable属性显示声明成true,这次可以了。
觉得之前如果把在AndroidManifest里把application的enable属性也显示声明成true,也应该可以,不过没有试。
NSString *extension = @"jpg";
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSArray *contents = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:NULL];
NSEnumerator *e = [contents objectEnumerator];
NSString *filename;
while ((filename = [e nextObject])) {
if ([[filename pathExtension] isEqualToString:extension]) {
[fileManager removeItemAtPath:[documentsDirectory stringByAppendingPathComponent:filename] error:NULL];
}
}
财宝的是五蕴种 其种落地必生根
五蕴不空生死累 空五蕴时生死空
着相布施九类相 施与受施因果因
胜因不无凡情胜 凡情胜是生死根
当用金刚智慧刃 斩尽凡情慧即生
不生凡情佛境界 不断凡情证何来
有福无慧生死苦 有慧无福苦难多
能明福难都是妄 无妄乐唱太平歌
/** * 判断字符串是否是数字 * */ public boolean isNumber(String userInput) { Pattern pattern = Pattern.compile("[0-9]*"); return pattern.matcher(userInput).matches(); }