当前位置:  编程技术>移动开发
本页文章导读:
    ▪增多主件        增加主件 转自:http://ziyu-1.iteye.com/blog/994998android 在布局中动态添加控件文章分类:Java编程第一步Java代码  收藏代码    final LayoutInflater inflater = LayoutInflater.from(this);  第二步:获取需要被.........
    ▪ 小游戏学习日志        小游戏学习日记 最近结合小游戏开发来进行android学习,选择的小游戏是连连看。requestWindowFeature();1.这个方法启用窗口的扩展属性,参数是Windows的一些枚举常量。WindowManager windowManager = get.........
    ▪ packageInfo有关类应用       packageInfo相关类应用 首先我们来看一下PackageItemInfo,它是包含了一些信息的基类,它的直接子类有:ApplicationInfo、ComponentInfo、 InstrumentationInfo、PermissionGroupInfo、PermissionInfo。它的间接子类有.........

[1]增多主件
    来源: 互联网  发布时间: 2014-02-18
增加主件
转自:http://ziyu-1.iteye.com/blog/994998
android 在布局中动态添加控件
文章分类:Java编程
第一步
Java代码  收藏代码

    final LayoutInflater inflater = LayoutInflater.from(this); 



第二步:获取需要被添加控件的布局
Java代码  收藏代码

    final LinearLayout lin = (LinearLayout) findViewById(R.id.LinearLayout01); 



第三步:获取需要添加的布局(控件)
Java代码  收藏代码

    LinearLayout layout = (LinearLayout) inflater.inflate( 
                            R.layout.listview, null).findViewById(R.id.layout); 



第四步:添加到布局中
Java代码  收藏代码

    lin.removeAllViews(); 
                    lin.addView(layout);

    
[2] 小游戏学习日志
    来源: 互联网  发布时间: 2014-02-18
小游戏学习日记
最近结合小游戏开发来进行android学习,选择的小游戏是连连看。

requestWindowFeature();

1.这个方法启用窗口的扩展属性,参数是Windows的一些枚举常量。

WindowManager windowManager = getWindowManager();

2.该对象可以可以忽略Activity,直接添加View等元素。

setContentView(..);

3.该函数设置当前的Activity使用那个UI,可以是.xml文件(通常的方式),也可以是另外一个的View。

setFocusable(true)

4.该方法使得当前的View获取到触摸操作事件。

下面学习一下如何显示一个图片。
BitMap bitmap = BitMapFactory.decodeResource(getResources(),R.drawable.<pic_name>);


 public void drawBitmap (Bitmap bitmap, float left, float top, Paint paint);

5.Canvas绘制图片的方法,第二个和第三个参数是图片的左上角的坐标。paint是画笔参数。


clipRect(int left,int top,int left,int bottom)

6.只绘制canvas上从(left,top)到 (right.bottom)部分,其他部分不显示。

boolean OnkeyDown(int keyCode, KeyEvent msg);

7.获取键盘按下的event


    
[3] packageInfo有关类应用
    来源: 互联网  发布时间: 2014-02-18
packageInfo相关类应用

首先我们来看一下PackageItemInfo,它是包含了一些信息的基类,它的直接子类有:ApplicationInfo、ComponentInfo、

InstrumentationInfo、PermissionGroupInfo、PermissionInfo。它的间接子类有:ActivityInfo、ProviderInfo、ServiceInfo。这个类
包含的信息对于所有包中项目是平等的。这些Package items是被Package manager所持有的。这个类提供了属性的非常普通的基本设置:
label、icon和meta-data。这个类的意图不是被自己调用。它在这只是简单地分享被package manager返回的所有items之间的普通定义。比
如,它自己并不实现Parcelable接口,但却帮助实现了Parcelable的子类提供了方便的方法。
ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml的<application>标签中收集到的。
ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从AndroidManifest.xml的<intent>标签收
集到的信息。
PackageManager这个类是用来返回各种的关联了当前已装入设备了的应用的包的信息。你可以通过getPacageManager来得到这个类。
ApplicationInfo与ResolveInfo比较:前者能够得到Icon、Label、meta-data、description。后者只能得到Icon、Label。
1 通过PackageManager获取手机已安装apk文件信息:
PackageManager packageManager = this.getPackageManager();  
List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);
通过以上方法,可以得到手机中安装的所有应用程序,既包括了手动安装的apk包的信息,也包括了系统预装的应用软件的信息,要区分这
两类软件可使用以下方法:
a.从packageInfoList获取的packageInfo,再通过packageInfo.applicationInfo获取applicationInfo。
b.判断(applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)的值,该值大于0时,表示获取的应用为系统预装的应用,反之则为手动
安装的应用。
c.判断可卸载的应用程序(appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0 || (appInfo.flags & 
ApplicationInfo.FLAG_SYSTEM) == 0)
2 获取图片、应用名、包名:
packageManager.getApplicationIcon(pinfo.applicationInfo); //Icon
packageManager.getApplicationLabel(pinfo.applicationInfo).toString()//应用程序名
pinfo.applicationInfo.packageName//包名
3 获取支持分享的应用程序的集合:
/** 
 * 查询手机内所有支持分享的应用 
 * @param context 
 * @return 
 */  
public static List<ResolveInfo> getShareApps(Context context){  
    List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();    
    Intent intent=new Intent(Intent.ACTION_SEND,null);    
    intent.addCategory(Intent.CATEGORY_DEFAULT);    
    intent.setType("text/plain");    
    PackageManager pManager = context.getPackageManager();  
    mApps = pManager.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);   
    return mApps;    
}
由于该方法,返回的并不是 PackageInfo 对象。而是 ResolveInfo。因此获取图片、应用名、包名的方法不一样,如下:
view plaincopy to clipboardprint?
PackageManager pManager = MessageSendActivity.this.getPackageManager();  
  
/*********************查询手机内所有支持分享的应用*********************/  
List<ResolveInfo> resolveList  = Utils.getShareApps(MessageSendActivity.this);  
  
for(int i=0;i<resolveList.size();i++) {  
    ResolveInfo resolve = resolveList.get(i);  
    ShareItemInfo shareItem = new ShareItemInfo();  //自定义的类  
    //set Icon  
 shareItem.setIcon(resolve.loadIcon(pManager));  
    //set Application Name  
    shareItem.setLabel(resolve.loadLabel(pManager).toString());  
    //set Package Name   
    shareItem.setPackageName(resolve.activityInfo.packageName);        
}  
4 应用程序使用权限获取方法:
packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions
5 调用系统程序设置界面
1) 2.3以上系统
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);  
Uri uri = Uri.fromParts(SCHEME, packageName, null);  
intent.setData(uri);  
startActivity(intent);  
2) 2.2、2.1版本
private void startApplicationDetailsActivity() {  
    Intent i = new Intent(Intent.ACTION_VIEW);                  
    i.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");  
    i.putExtra(APP_PKG_NAME, packageName);   
    startActivity(i); 
}  
但是常量APP_PKG_NAME的定义并不相同。
2.2中定义为"pkg",2.1中定义为"com.android.settings.ApplicationPkgName"
3) 通用的代码如下:
private static final String SCHEME = "package";  
/** 
 * 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.1及之前版本) 
 */  
private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";  
/** 
 * 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.2) 
 */  
private static final String APP_PKG_NAME_22 = "pkg";  
/** 
 * InstalledAppDetails所在包名 
 */  
private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";  
/** 
 * InstalledAppDetails类名 
 */  
private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";  
/** 
 * 调用系统InstalledAppDetails界面显示已安装应用程序的详细信息。 对于Android 2.3(Api Level 
 * 9)以上,使用SDK提供的接口; 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)。 
 *  
 * @param context 
 *  
 * @param packageName 
 *            应用程序的包名 
 */  
public static void showInstalledAppDetails(Context context, String packageName) {  
    Intent intent = new Intent();  
    final int apiLevel = Build.VERSION.SDK_INT;  
    if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口  
        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);  
        Uri uri = Uri.fromParts(SCHEME, packageName, null);  
        intent.setData(uri);  
    } else { // 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)  
        // 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。  
        final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22  
                : APP_PKG_NAME_21);  
        intent.setAction(Intent.ACTION_VIEW);  
        intent.setClassName(APP_DETAILS_PACKAGE_NAME,  
                APP_DETAILS_CLASS_NAME);  
        intent.putExtra(appPkgName, packageName);  
    }  
    context.startActivity(intent);  
}  
6 获取未安装的apk图标
http://blog.csdn.net/sodino/archive/2011/03/01/6215224.aspx
7 监听Android应用程序是否卸载成功
http://hi.baidu.com/luodaijun/blog/item/0887a8c37e9dfc58b219a808.html
8 安装apk
   Intent intent = new Intent(Intent.ACTION_VIEW); 
   intent.setDataAndType(Uri.fromFile(new File("/sdcard/1.apk")), "application/vnd.android.package-archive"); 
   startActivity(intent); 
9  运行应用
   首先android有一个PackageManager,这玩意功能很强大,功能就和它的意思一样
   
   假设:如果我们知道一个第三方Application的包的名称和Activity的名称,是否可以启动它的,答案当让市YES
   
   启动代码:
   PackageManager pm;  
   //初始化pm, 比如在activity里可以PackageManager pm = getPackageManager(); 
   PackageInfo pi = pm.getPackageInfo("包的名称", PackageManager.GET_ACTIVITIES);
   //PackageInfo  包含丰富的包的信息,这个'包的名称'是什么,在AndroidManifest.xml中有明确定义 
   //  比如 package="xxx.yyy.Portal.UI"
   ActivityInfo ai=pi.activities[0];  // ActivityInfo 同样道理 他是 Activity的信息
   //这里指向第一个包中的Activity, 大多数都是第一个Activity为启动Activity
   if(ai==null) throw new Exception(pkg+"不包含任何Activity");
   String sName=ai.name;  //这里就得到Activity的类名了
   启动它:
   Intent intent = new Intent();
   intent.setComponent(new ComponentName(pkg,sName));
   parent.startActivity(intent);
10  获得第三方应用的包名
     
   只要有包名,就可以启动Activity了,但是不知道名字怎么办?
   如果应用没有安装自然启动不了,只要安装了就有办法。
   方法1 :
        MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
        IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_INSTALL);
        filter.addAction(Intent.ACTION_PACKAGE_ADDED);
        filter.addDataScheme("package"); 
        registerReceiver(myReceiver, filter);
        
      监视安装,在MyBroadcastReceiver的onReceive函数里
      public void onReceive(Context arg0, Intent intent) {
                        String sPackageName=intent.getDataString();  //这个就是包名
                }
      也可以使用 AndroidManifest.xml配置来监视
   方法2 : 
      枚举所有安装的应用,根据你自己的条件筛选
      使用PackageManager的
      public abstract List<PackageInfo> getInstalledPackages (int flags) 可以获得安装应用的列表


    
最新技术文章:
▪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