case1:如何让ActionBar中的返回键返回到指定activity
在ActionBar中setDisplayHomeAsUpEnabled(boolean enalbe) 方法,将其设置为true, 给ActionBar左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP。
同时在AndroidManifest.xml中对应的activity设置parentactivityname,为该activity规定一个父activity,当用户按ActionBar中左边的返回键时,就会跳转到该父activity。
<activity android:name="com.sprd.gallery3d.app.MovieViewProxySet"
android:label="@string/movie_view_parameter_set"
android:icon="@drawable/icon_video"
android:parentActivityName="MovieActivity">
</activity>
需要注意,在activity中不用调用onOptionsItemSelected来监听android.R.id.home键信息。
case 2:如何删除程序的快捷方式
private void delShortcut(){
Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");//快捷方式的名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
//指定当前的Activity为快捷方式启动的对象: 如 //com.everest.video.VideoPlayer
//注意: ComponentName的第二个参数必须是完整的类名(包名+类名),否则无法删除快捷方式
String appClass = this.getPackageName() + "." +this.getLocalClassName();
ComponentName comp = new ComponentName(this.getPackageName(), appClass);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, newIntent(Intent.ACTION_MAIN).setComponent(comp));
sendBroadcast(shortcut);
}
case3:android xml中activity-alias有什么作用
activity-alias是android里为了重复使用Activity而设计的。
当在Activity的onCreate()方法里,执行getIntent().getComponent().getClassName();得到的可能不是这个Activity的名字,有可能是别名的名字,例如:在AndroidMenifest.xml有如下配置:
<activity
android:name=".TestAndroid"
android:icon="@drawable/ic_menu_mark">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity-alias
android:name="TestAndroidAlias"
android:targetActivity="TestAndroid"
android:label="testAndroidlias"
android:icon="@drawable/ic_launcher_phone">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
这个应用会在桌面上建两个进入点,即建两个可以进入TestAndroid这个Activity的快捷图标。这时getIntent().getComponent().getClassName() 得到的名字就不一样,一个是com.test.TestAndroid,一个是com.test.TestAndroidAlias。
case4:如何做一个简单的应用程序启动画面?
在Theme中有一个item,<item name="windowBackground">@android:color/black</item>,可以将它的值
设置为一张图片, <item name="android:windowBackground">@drawable/launch_background</item>
,这样应用程序在启动的时候就不是默认的黑屏效果,而是一张自己定义的图片,从而实现一个简单的
启动画面。
这样会有一个问题,windowBackground改变了activity的背景颜色,当activity再次加载,例如解锁,
仍会出现这个背景图片,这就需要在activity在加载完成之后重新将背景刷上需要的效果, getWindow
().setBackgroundDrawableResource(R.color.item_black)。
case5:MP3文件由哪些部分组成
MP3文件是由帧构成,帧是MP3文件的最小组成单位。根据帧性质的不同,文件大体分为四个部分:ID3v2标签帧、数据帧、APEV2标签帧和ID3v1标签帧,而只有数据帧才是必需的。数据帧包含了歌曲的压缩数据,标签帧则提供了歌曲的演唱者、歌名、专辑、年份等信息。
(1)ID3v2标签:放置在文件开头,以字符串“ID3”为标识,长度不固定,扩展了ID3V1的信息量。
(2)数据帧:由帧头和数据实体组成,主要分为两种类型,即CBR和VBR。其中固定位率的MP3文件称作CBR,对于CBR来说,所有帧的帧头格式都一样,大多数MP3文件都是CBR的。可变位率的MP3文件称作VBR,VBR MP3的帧头主要有两种类型,分别是XING和VBRI,且XING头位于第一个音频数据帧中。
(3)APEV2标签:是最新出现的一种标签,以字符串“APETAGEX”为标识,长度不固定,位置也不固定,可能在文件末尾也可能在文件头,比较常见的是位于文件尾部,但在ID3v1之前。
(4)ID3v1标签:在文件结尾,以字符串“TAG”为标识,其长度是固定的128个字节。
case6:如何跨应用读取其SharedPreferences
在A应用中创建一个SharedPreferences,需要将其MODE设置为Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS,让其具备相关权限,其它应用才能读取。如下所示:
SharedPreferences sp = getSharedPreferences("wallpaper", Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
然后在其它添加相关数据即可。
在B应用中,首先要获得A应用的Context,进而得到其SharedPreferences,具体如下:
Context packageContext = context.createPackageContext("xx.xx.xx", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sp = packageContext.getSharedPreferences("wallpaper", Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
其中"xx.xx.xx"为A应用的包名。Context.CONTEXT_IGNORE_SECURITY为忽略安全警告,不添加此权限,有些功能无法使用。
在成功获得其SharedPreferences之后,读取其中的相关数据。
case 7:如何获取别的包的Context?
Android中有Context的概念,想必大家都知道。Context可以做很多事情,打开activity、发送广播、打开本包下文件夹和数据库、获取classLoader、获取资源等等。如果得到了一个包的Context对象,那么基本上可以做这个包自己能做的大部分事情。
Context有个createPackageContext方法,可以创建另外一个包的上下文,这个实例不同于它本身的Context实例,但是功能是一样的。
方法如下:
public Context createPackageContext(String packageName, int flags)
这个方法有两个参数:
1。packageName 包名,要得到Context的包名
2。flags 标志位,有CONTEXT_INCLUDE_CODE和CONTEXT_IGNORE_SECURITY两个选项。 CONTEXT_INCLUDE_CODE的意思是包括代码,也就是说可以执行这个包里面的代码。CONTEXT_IGNORE_SECURITY的意思是忽略安全警告,如果不加这个标志的话,有些功能是用不了的,会出现安全警告。
case8:利用Java的反射机制结束Android进程
ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
try {
Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);
forceStopPackage.setAccessible(true);
forceStopPackage.invoke(am, "com.android.mms");//com.android.mms是要结束进程的包名
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
case9:android sharepreference 文件权限
android给我们提供了三种模式:
私有(MODE_PRIVATE):仅有创建程序有权限对其进行读取或写入
全局读(MODE_WORLD_READABLE):不仅创建程序可以对其进行读取或写入,其他应用程序也读取操作的权限,但没有写入操作的权限
全局写(MODE_WORLD_WRITEABLE):创建程序和其他程序都可以对其进行写入操作,但没有读取的权限