当前位置:  编程技术>移动开发
本页文章导读:
    ▪判断是不是为系统应用的几种方法[整理]        判断是否为系统应用的几种方法[整理] 原文链接: http://www.lepeng.net/blogger/?p=306   1. if(new File("/data/app/" + packageInfo.packageName + ".apk").exists()) 2. packageInfo.versionName != null && packageInfo.application.........
    ▪ Shortcut的增添和删除        Shortcut的添加和删除 1.默认的Shortcut操作 [添加] 默认安装后的应用(Launcher属性),图标都会出现在"抽屉面板"中,在里面长按并拖曳图标可以拖动到桌面,实现快捷方式的添加。[删除] 长按桌.........
    ▪ 暗藏Status Bar       隐藏Status Bar 你可能知道一个简易的方法,那就是在程序的viewDidLoad中加入以下代码:   [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];     此法可以隐藏状态条,但问题在于,状态.........

[1]判断是不是为系统应用的几种方法[整理]
    来源: 互联网  发布时间: 2014-02-18
判断是否为系统应用的几种方法[整理]

原文链接: http://www.lepeng.net/blogger/?p=306

 

1. if(new File("/data/app/" + packageInfo.packageName + ".apk").exists())

2. packageInfo.versionName != null && packageInfo.applicationInfo.uid > 10000

3. if((packageInfo.applicationInfo.flags& ApplicationInfo.FLAG_SYSTEM) != 0)

 

* 经测试,最好使用第3个方法,另外两个不大准。


补充:: 示例代码>>

public static boolean isSystemApplication(Context context, String packageName){
    	PackageManager manager = context.getPackageManager();
        try {
			PackageInfo packageInfo = manager.getPackageInfo(packageName, PackageManager.GET_CONFIGURATIONS);
			// 1
			if(new File("/data/app/"+packageInfo.packageName+".apk").exists()){
				return true;
			}
			// 2
			if(packageInfo.versionName!=null && packageInfo.applicationInfo.uid>10000){
				return true;
			}
			// 3
			if((packageInfo.applicationInfo.flags & android.content.pm.ApplicationInfo.FLAG_SYSTEM)!=0){
				return true;
			}
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}
		return false;
    }

    
[2] Shortcut的增添和删除
    来源: 互联网  发布时间: 2014-02-18
Shortcut的添加和删除

1.默认的Shortcut操作
[添加]
默认安装后的应用(Launcher属性),图标都会出现在"抽屉面板"中,在里面长按并拖曳图标可以拖动到桌面,实现快捷方式的添加。

[删除]
长按桌面的图标,"抽屉面板"的小箭头会变成一个垃圾箱的图标,然后将图标拖进去就删除了。

2.对Shortcut列表进行添加/删除操作
[添加]
在默认桌面空白处长按,会弹出选择对话框,选择"Shortcut",找到要添加的应用快捷方式进行添加。

首先我们要将应用的选项添加到Shortcut列表里来,直接上代码:

/** 
 * 添加到Shortcut选项中(默认桌面上长按调出)
 *
 * 同时需要在manifest中为activity提供一个包含
 * action="/blog_article/android.intent.action.CREATE_SHORTCUT"的intent-filter
 */
private void addShortcutToOptions(){
      // 创建一个默认的Intent
      Intent shortcut = new Intent();
           
      //快捷方式的名称
      shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
      //不允许重复创建
      shortcut.putExtra("duplicate", false);
                 
      //指定当前的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));
      // 下面的方法与上面的效果是一样的,另一种构建形式而已
//    Intent respondIntent = new Intent(this, this.getClass());
//    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);
           
      //快捷方式的图标
      ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);
      shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
           
      // 发送到消息队列
      setResult(RESULT_OK, shortcut);
}

 

[删除]
应用重装/卸载后会自动删除

3.直接对Shortcut进行添加/删除操作(通过代码)
[添加]
要点:
1. 给Intent指定action="/blog_article/com.android.launcher.INSTALL_SHORTCUT"
2. 给定义为Intent.EXTRA_SHORTCUT_INENT的Intent设置与安装时一致的action(必须要有)
3. 在AndroidManifest.xml中添加权限:com.android.launcher.permission.INSTALL_SHORTCUT

/**
 * 为程序创建桌面快捷方式
 *
 * 同时需要在manifest中设置以下权限:
 * <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
 */
private void addShortcut(){
      Intent shortcut = newIntent("com.android.launcher.action.INSTALL_SHORTCUT");
                 
      // 快捷方式的名称
      shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
      // 不允许重复创建
      shortcut.putExtra("duplicate", false);
                 
      // 指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer
      // 这里必须为Intent设置一个action,可以任意(但安装和卸载时该参数必须一致)
      String action = "com.android.action.test";
      Intent respondIntent = new Intent(this, this.getClass());
      respondIntent.setAction(action);
      shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);
      // 下面的方法与上面的效果是一样的,另一种构建形式而已
      // 注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序
//    String appClass = this.getPackageName() + "." + this.getLocalClassName();
//    ComponentName comp = new ComponentName(this.getPackageName(), appClass);
//    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(action).setComponent(comp));

      // 快捷方式的图标
      ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);
      shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
                 
      sendBroadcast(shortcut);
}

 

[删除]
要点:
1. 给Intent指定action="/blog_article/com.android.launcher.UNINSTALL_SHORTCUT"
2. 给定义为Intent.EXTRA_SHORTCUT_INENT的Intent设置与安装时一致的action(必须要有)
3. 在AndroidManifest.xml中添加权限:com.android.launcher.permission.UNINSTALL_SHORTCUT

/**
 * 删除程序的快捷方式
 *
 * 同时需要在manifest中设置以下权限:
 * <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
 */
private void delShortcut() {
      Intent shortcut = newIntent("com.android.launcher.action.UNINSTALL_SHORTCUT");
           
      // 快捷方式的名称
      shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));

      // 指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer
      // 这里必须为Intent设置一个action,可以任意(但安装和卸载时该参数必须一致)
      String action = "com.android.action.test";
      Intent respondIntent = new Intent(this, this.getClass());
      respondIntent.setAction(action);
      shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);
      // 下面的方法与上面的效果是一样的,另一种构建形式而已
      // 注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序
//    String appClass = this.getPackageName() + "." + this.getLocalClassName();
//    ComponentName comp = new ComponentName(this.getPackageName(), appClass);
//    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(action).setComponent(comp));
           
      sendBroadcast(shortcut);
}

 

>> 可见添加到Shortcut列表和直接添加到桌面以及删除的操作都是大同小异的,归纳如下:
1. 对应Shortcut的Intent
   1)添加到Shorcut列表时,不需要指定action
   2)添加到桌面时,需指定action="/blog_article/com.android.launcher.action.INSTALL_SHORTCUT"
   3)删除桌面Shortcut时,需要指定action="/blog_article/com.android.launcher.action.UNINSTALL_SHORTCUT"
2. 对应被设为Intent.EXTRA_SHORTCUT_INTENT的Intent
   1)添加到Shorcut列表时,不需要指定action
   2)直接添加/删除(桌面Shortcut)时,需指定一致的action(可任意)

* 这里有个问题就是:如何创建非自身应用的快捷方式?
必须知道应用的包名,然后通过Context.getPackageManager()获取到PackageManager来进行具体操作,里面提供了丰富的函数来获取应用的信息。例如,获取某个应用的图标:
Drawable getApplicationIcon(String packageName)

 

-------------------------------------
参考资料:
Android 向桌面添加快捷方式
Android桌面快捷方式图标生成与删除,使用Intent与launcher交互
Android创建和删除桌面快捷方式

 

-------------------------------------
最后上一个完整示例代码:

1 楼 常思己过 2011-03-11  
感谢分享,之前还真不是不知道如果删除
2 楼 torycatkin 2011-03-18  
我想问一下,如何在应用安装到手机里时,自动在桌面增加快捷方式?
需要监听哪儿事件?如何处理重复添加快捷方式会报toast
3 楼 univasity 2011-03-18  
torycatkin 写道
我想问一下,如何在应用安装到手机里时,自动在桌面增加快捷方式?
需要监听哪儿事件?如何处理重复添加快捷方式会报toast


“如何安装后自动增加快捷方式”是个值得探讨的问题,具体还没研究过。我目前了解到的是,桌面默认的快捷方式是被定义在Launcher项目的res/xml/default_workspace.xml中的。

至于添加操作后会产生提示,是Launcher中触发的,估计只能改Launcher源码了。

有思路的都来探讨下~~
4 楼 莫言_MoYan 2011-09-22  
什么时候执行删除快捷方式呢?
我的现在在卸载的时候,快捷方式删不掉。
5 楼 univasity 2011-09-22  
可以在manifest中注册一个广播接收器,监听android.intent.action.PACKAGE_REMOVED的action。这样在应用被卸载时广播就会被触发,在里面做相应的处理。我想应该是这样的,具体未操作过。

莫言_MoYan 写道
什么时候执行删除快捷方式呢?
我的现在在卸载的时候,快捷方式删不掉。

6 楼 woyaowenzi 2012-05-23  
发现一个bug,默认的生成的shortcut不可用。
  
原因是:addShortcutToOptions,addShortcutToDesktop,delShortcutFromDesktop传入的参数className不正确。不应该使用instance.getLocalClassName()获取class名,因为通过它取到的是ShortcutDemo,而不是com.android.shortcut.ShortcutDemo,如果使用class名是ShortcutDemo,那么,当在另外一个程序中startActivity时,就出报出这么个错误:【W/System.err(6003): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.shortcut/.ShortcutDemo}; have you declared this activity in your AndroidManifest.xml?】

原因可能是startActivity时,只从这个appliction中查找这个类,所以最终找不到对应的activity.

因此,应该使用instance.getClass().getName()来获取classname.

    
[3] 暗藏Status Bar
    来源: 互联网  发布时间: 2014-02-18
隐藏Status Bar

你可能知道一个简易的方法,那就是在程序的viewDidLoad中加入以下代码:

 

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];

   

此法可以隐藏状态条,但问题在于,状态条所占空间依然无法为程序所用。

 

本篇介绍的方法依然简单,但更为奏效。通过简单的3个步骤,在plist中加入一个键值来实现。

 

1. 点击程序的Info.plist

 

2. 右键点击任意一处,选择Add Row

 

3. 加入的新键值,命名为UIStatusBarHidden或者Status bar is initially hidden,然后选上这一项。

 

现在,重新编译运行iphone程序,看看结果如何。

 

或者在程序的viewDidLoad中加入以下代码:

 

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3