当前位置: 编程技术>移动开发
本页文章导读:
▪NSLog warning:”format not a string literal and no format arguments”的临时解决办法 NSLog warning:”format not a string literal and no format arguments”的临时解决方法
在以前的Mac OSX版本中,用Objective c写程序时,写这样一句是没有任何问题的:------------------.........
▪ 自定义Activity间跳转成效 自定义Activity间跳转效果
两个Activity跳转的时候,自定义翻页效果://这段只是示例代码,要看到我下面的图片演示的结果还需要自己写相应的Activity
Intent intent = new Intent(FirstActivity.this, Seco.........
▪ 怎么截取指定号码的短信,并且不让系统截取到通知用户 如何截取指定号码的短信,并且不让系统截取到通知用户
之前在做黑名单屏蔽短信的时候,遇到一个比较棘手的问题,就是我截取我指定号码的短信之后,但是我如何不让系统通过通知栏通.........
[1]NSLog warning:”format not a string literal and no format arguments”的临时解决办法
来源: 互联网 发布时间: 2014-02-18
NSLog warning:”format not a string literal and no format arguments”的临时解决方法
在以前的Mac OSX版本中,用Objective c写程序时,写这样一句是没有任何问题的:
----------------------
NSString *name = @"Mimi";
NSLog(name);
而到了SnowLeopard,用上Xcode 3.2之后,如果这么写总是会有一个“format not a string literal and no format arguments”warning, 虽说这个Warning不管它也没什么,但让有洁癖的人总是心里疙疙瘩瘩的。
究其原因,这个Warning的产生是因为在GCC 4.2中使用了更严格的类型检测所致。
这个问题貌似还没有很完美的解决办法。如果真的看着这些Warning心烦的话,可以在xcode里通过禁用“Typecheck Calls to printf/scanf选项”来去掉。截图如下:
相关资料地址: http://stackoverflow.com/questions/1677824/snowleopard-xcode-warning-format-not-a-string-literal-and-no-format-arguments
[2] 自定义Activity间跳转成效
来源: 互联网 发布时间: 2014-02-18
自定义Activity间跳转效果
两个Activity跳转的时候,自定义翻页效果:
下面为两个自定义的动画效果XML文件,存放位置为:res/anim/
1,动画退出效果:zoomout.xml
动画演示结果:
2,动画进入效果:zoomin.xml
动画演示结果:
1.进入过程中效果
2.进入后效果
两个Activity跳转的时候,自定义翻页效果:
//这段只是示例代码,要看到我下面的图片演示的结果还需要自己写相应的Activity Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivityForResult(intent, 11); //添加界面切换效果,注意只有Android的2.0(SdkVersion版本号为5)以后的版本才支持 int version = Integer.valueOf(android.os.Build.VERSION.SDK); if(version >= 5) { overridePendingTransition(R.anim.zoomin, R.anim.zoomout); //此为自定义的动画效果,下面两个为系统的动画效果 //overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out); //overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right); }
下面为两个自定义的动画效果XML文件,存放位置为:res/anim/
1,动画退出效果:zoomout.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" android:zAdjustment="top"> <scale android:fromXScale="1.0" android:toXScale=".5" android:fromYScale="1.0" android:toYScale=".5" android:pivotX="50%p" android:pivotY="50%p" android:duration="3000" /> <!-- 系统内置的动画持续时间 android:duration="@android:integer/config_mediumAnimTime" --> <alpha android:fromAlpha="1.0" android:toAlpha="0" android:duration="3000"/> </set>
动画演示结果:
2,动画进入效果:zoomin.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator"> <scale android:fromXScale="0.1" android:toXScale="1.0" android:fromYScale="0.1" android:toYScale="1.0" android:pivotX="50%p" android:pivotY="50%p" android:duration="3000" /> <!-- 这里为了看到动画演示效果,把动画持续时间设为3秒 --> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="3000" /> </set>
动画演示结果:
1.进入过程中效果
2.进入后效果
[3] 怎么截取指定号码的短信,并且不让系统截取到通知用户
来源: 互联网 发布时间: 2014-02-18
如何截取指定号码的短信,并且不让系统截取到通知用户
之前在做黑名单屏蔽短信的时候,遇到一个比较棘手的问题,就是我截取我指定号码的短信之后,但是我如何不让系统通过通知栏通知用户,在网上也寻找了很久,也有点眉目了,以下是别人使用 ContentObserver 来监听短信数据库变化来实现的。
public class ScreenTest extends Activity { class SmsContent extends ContentObserver{ private Cursor cursor = null; public SmsContent(Handler handler) { super(handler); } /** * @Description 当短信表发送改变时,调用该方法 * 需要两种权限 * android.permission.READ_SMS 读取短信 * android.permission.WRITE_SMS 写短信 * @Author Snake * @Date 2010-1-12 */ @Override public void onChange(boolean selfChange) { // TODO Auto-generated method stub super.onChange(selfChange); //读取收件箱中指定号码的短信 cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id", "address", "read"}, " address=? and read=?", new String[]{"12345678901", "0"}, "date desc"); if (cursor != null){ ContentValues values = new ContentValues(); values.put("read", "1"); //修改短信为已读模式 cursor.moveToFirst(); while (cursor.isLast()){ //更新当前未读短信状态为已读 getContentResolver().update(Uri.parse("content://sms/inbox"), values, " _id=?", new String[]{""+cursor.getInt(0)}); cursor.moveToNext(); } } } } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); SmsContent content = new SmsContent(new Handler()); //注册短信变化监听 this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content); } } public class ScreenTest extends Activity { class SmsContent extends ContentObserver{ private Cursor cursor = null; public SmsContent(Handler handler) { super(handler); } /** * @Description 当短信表发送改变时,调用该方法 * 需要两种权限 * android.permission.READ_SMS读取短信 * android.permission.WRITE_SMS写短信 * @Author Snake * @Date 2010-1-12 */ @Override public void onChange(boolean selfChange) { // TODO Auto-generated method stub super.onChange(selfChange); //读取收件箱中指定号码的短信 cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id", "address", "read"}, " address=? and read=?", new String[]{"12345678901", "0"}, "date desc"); if (cursor != null){ ContentValues values = new ContentValues(); values.put("read", "1"); //修改短信为已读模式 cursor.moveToFirst(); while (cursor.isLast()){ //更新当前未读短信状态为已读 getContentResolver().update(Uri.parse("content://sms/inbox"), values, " _id=?", new String[]{""+cursor.getInt(0)}); cursor.moveToNext(); } } } } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); SmsContent content = new SmsContent(new Handler()); //注册短信变化监听 this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content); } }
http://bingtian.iteye.com/blog/641566
最新技术文章: