有时候在Android数据库操作Uri时可能遇到类似Caused by: java.lang.IllegalArgumentException: Unknown URL content://xxx 这样的错误,出现 Unknown URL content 这样的关键词主要是,Uri前部分存在,而后面部分的数据不存在造成的,而出现类似 ActivityThread: Failed to find provider info for xxx 这样的是这个Uri根本就不存在,由于Android系统上系统的内置provider的content名称经常改变在不同版本的固件上可能出现这些问题,希望大家注意。
解析
androidmanifest.xml高级属性解析 Android开发技术
Android工程的的主配置文件androidmanifest.xml的一些高级属性大多数开发者可能不了解,下面我们一起来看一看。 支持的屏幕大小设置,我们可以显示的指定允许运行在: <supports-screens android:largeScreens="true" //WVGA android:normalScreens="true" //HVGA android:smallScreens="true" //QVGA android:resizable="true" android:anyDensity="true" /> 是否必须支持5位导航键才能使用,一般多用于游戏 <uses-configuration android:reqFiveWayNav="true" /> Android 2.1开始的Live Wallpaper特性要求 <uses-feature android:name="android.software.live_wallpaper" /> 必须保证设备包含了光线感应器 <uses-feature android:name="android.hardware.sensor.light" /> 设备OpenGL的支持版本,值为一个int型的整数。 <uses-feature android:openGlEsVersion="int"> Android开发网提示大家更多的androidmanifest.xml文件相关内容可以查找本站过去归档来了解更多。 引用一个外部的jar,一般在非Eclipse IDE中我们可以直接使用 <uses-library> 来实现。
android.text.format文件大小和日期解析类 Android开发技术
很多网友可能直接将自己的J2ME项目生硬的移植到Android平台,其实Google为我们提供好了文件大小和时间日期解析类,它位于android.text.format这个包中,它提供了强大的标准化解析方法: 1. IP地址解析类 在android.text.format.Formatter中提供了String formatIpAddress(int addr) 这个方法可以轻松方便的将socket中的int型转成类似127.0.0.1的IP格式,需要注意的是Linux平台的字节顺序,即小字节序、低字节序little-endian。 2. 文件大小解析类 细心的网友可能还看到了android.text.format.Formatter中的formatFileSize方法,该方法String formatFileSize (Context context, long number) ,第二个参数是long型,一般为File对象的最后修改时间或创建时间的方法,最终返回类似 12KB、5Bytes的值,20MB的字符串。 3. 日期时间解析类 ,该类位于android.text.format.DateFormat这个package中,该类提供了Java中的三种时间对象,Android123提示大家下面三种方法为静态可以直接调用,如下: final static CharSequence format(CharSequence inFormat, Date inDate) //传入Date对象 Given a format string and a Date object, returns a CharSequence containing the requested date. final static CharSequence format(CharSequence inFormat, Calendar inDate) […]
Android Theme和Styles内部定义解析 Android开发技术
昨天我们讲到的有关在AndroidManifest.xml中定义Activity的theme方法来实现无标题的方法,在使用xml让你的Activity无标题方法 一文中讲到的,很多网友不明白为什么这样做,其实在Android123以前的文章中多次提到了styles样式定义方法,今天Android开发网再次把一些网友回顾了解下android样式的内部定义。在一个工程的res/values/theme.xml中我们可以方便的定义自己的风格主题,比如下面的cwjTheme中我们使用了基于android内部的白色调的背景Theme.Light,设置windowsNoTitle为true代表没有标题,背景颜色我们使用了android内部定义的透明,同时设置listView控件的样式为cwjListView,xml样式代码如下: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="cwjTheme" parent="android:Theme.Light"> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:listViewStyle">@style/cwjListView</item> </style> 有关ListView控件我们自定义的风格就是修改下系统listview这个控件的每行分隔符样式,这里我们在工程下res/drawable文件夹下放一个图片名为list_selector图片,这样我们的cwjListView的代码可以这样写 <style name="cwjListView" parent="@android:style/Widget.ListView"> <item name="android:listSelector">@drawable/list_selector</item> </style> </resources> 通过定义style可以设置更多,比如让cwjListView的字体颜色就加入textAppearance属性,比如 <item name="textAppearance">@android:style/TextAppearance</item> 等等。
ApiDemos中的Android Widget例子解析 Android开发技术
今天继续我们的Android Widget开发之旅,看看Android SDK中ApiDemos上的Widget例子,下面的代码分为3个文件可以清楚的看到整个框架,主要是AppWidgetProvider类中的onUpdate、onDeleted、 onEnabled、onDisabled和updateAppWidget方法之间的状态改变,使用Logcat仔细分析一个widget的生命周期。 package com.example.android.apis.appwidget; import android.appwidget.AppWidgetManager;import android.appwidget.AppWidgetProvider;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.pm.PackageManager;import android.os.SystemClock;import android.util.Log;import android.widget.RemoteViews; import java.util.ArrayList;import com.example.android.apis.R; 涉及到的文件有 ExampleAppWidgetConfigure.javaExampleBroadcastReceiver.javares/layout/appwidget_configure.xmlres/layout/appwidget_provider.xmlres/xml/appwidget_provider.xml public class ExampleAppWidgetProvider extends AppWidgetProvider { private static final String TAG = "ExampleAppWidgetProvider"; //logcat调试信息 public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { Log.d(TAG, "onUpdate"); // – 创建一个RemoteViews 对象 // – […]

