package com.shishixun.installapk;
import java.io.file;<br>import java.io.filefilter;<br>import java.util.arraylist;
import android.app.activity;<br>import android.content.pm.packageinfo;<br>import android.content.pm.packagemanager;<br>import android.graphics.drawable.drawable;<br>import android.os.bundle;<br>import android.text.format.formatter;<br>import android.util.log;
public class mainactivity extends activity {<br> /** called when the activity is first created. */<br> @override<br> public void oncreate(bundle savedinstancestate) {<br> super.oncreate(savedinstancestate);<br> setcontentview(r.layout.main);<br> final file appfolder = new file( "/sdcard" );<br> arraylist<file> files = getfiles( appfolder,<br> true );<br> packagemanager pm = getpackagemanager( );<br> for ( int i = 0, size = files.size( ); i < size; i++ )<br> {<br> file f = files.get( i );<br> packageinfo pi= pm.getpackagearchiveinfo( f.getabsolutepath( ), 0 );<br> if ( pi != null )<br> {<br> apkinfo holder = new apkinfo( );<br> holder.file = f;<br> holder.pkgname = pi.packagename;<br> holder.size = f.length( );<br> holder.sizestring = formatter.formatfilesize( mainactivity.this,<br> holder.size );<br> holder.version = pi.versionname == null ? string.valueof( pi.versioncode )<br> : pi.versionname;<br> system.out.println("file="+f+"pkgname="+holder.pkgname +"size"+holder.sizestring+"version"+holder.version );<br> }<br> }
}<br> <br> <br> arraylist<file> getfiles( file parent, final boolean recursive )<br> {<br> final arraylist<file> files = new arraylist<file>( );
filefilter filter = new filefilter( ) {
public boolean accept( file f )<br> {<br> if ( f.isfile( )<br> && f.getname( ).tolowercase( ).endswith( ".apk" ) )
{<br> files.add( f );<br> }<br> else if ( recursive && f.isdirectory( ) )<br> {<br> try<br> {<br> // try skip links<br> if ( f.getabsolutepath( )<br> .equals( f.getcanonicalpath( ) ) )<br> {<br> f.listfiles( this );<br> }<br> }<br> catch ( exception e )<br> {<br> log.e( mainactivity.class.getname( ),<br> e.getlocalizedmessage( ),<br> e );<br> }<br> }<br> return false;<br> }<br> };
parent.listfiles( filter );
return files;<br> }<br> <br> <br> /**<br> * apkinfo<br> */<br> private static final class apkinfo<br> {
file file;<br> charsequence label;<br> string pkgname;<br> string version;<br> string sizestring;<br> long size;<br> drawable icon;<br> int installed;<br> boolean checked;
apkinfo( )<br> {
}<br> }<br>}
import java.io.file;<br>import java.io.filefilter;<br>import java.util.arraylist;
import android.app.activity;<br>import android.content.pm.packageinfo;<br>import android.content.pm.packagemanager;<br>import android.graphics.drawable.drawable;<br>import android.os.bundle;<br>import android.text.format.formatter;<br>import android.util.log;
public class mainactivity extends activity {<br> /** called when the activity is first created. */<br> @override<br> public void oncreate(bundle savedinstancestate) {<br> super.oncreate(savedinstancestate);<br> setcontentview(r.layout.main);<br> final file appfolder = new file( "/sdcard" );<br> arraylist<file> files = getfiles( appfolder,<br> true );<br> packagemanager pm = getpackagemanager( );<br> for ( int i = 0, size = files.size( ); i < size; i++ )<br> {<br> file f = files.get( i );<br> packageinfo pi= pm.getpackagearchiveinfo( f.getabsolutepath( ), 0 );<br> if ( pi != null )<br> {<br> apkinfo holder = new apkinfo( );<br> holder.file = f;<br> holder.pkgname = pi.packagename;<br> holder.size = f.length( );<br> holder.sizestring = formatter.formatfilesize( mainactivity.this,<br> holder.size );<br> holder.version = pi.versionname == null ? string.valueof( pi.versioncode )<br> : pi.versionname;<br> system.out.println("file="+f+"pkgname="+holder.pkgname +"size"+holder.sizestring+"version"+holder.version );<br> }<br> }
}<br> <br> <br> arraylist<file> getfiles( file parent, final boolean recursive )<br> {<br> final arraylist<file> files = new arraylist<file>( );
filefilter filter = new filefilter( ) {
public boolean accept( file f )<br> {<br> if ( f.isfile( )<br> && f.getname( ).tolowercase( ).endswith( ".apk" ) )
{<br> files.add( f );<br> }<br> else if ( recursive && f.isdirectory( ) )<br> {<br> try<br> {<br> // try skip links<br> if ( f.getabsolutepath( )<br> .equals( f.getcanonicalpath( ) ) )<br> {<br> f.listfiles( this );<br> }<br> }<br> catch ( exception e )<br> {<br> log.e( mainactivity.class.getname( ),<br> e.getlocalizedmessage( ),<br> e );<br> }<br> }<br> return false;<br> }<br> };
parent.listfiles( filter );
return files;<br> }<br> <br> <br> /**<br> * apkinfo<br> */<br> private static final class apkinfo<br> {
file file;<br> charsequence label;<br> string pkgname;<br> string version;<br> string sizestring;<br> long size;<br> drawable icon;<br> int installed;<br> boolean checked;
apkinfo( )<br> {
}<br> }<br>}