学习点滴(四)

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):创建程序和其他程序都可以对其进行写入操作,但没有读取的权限


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值