Android携帯電話の内部記憶空間と外部記憶空間のパラメータを取得する&&apkのインストール位置をどのように決定するか
4788 ワード
Androidファイルシステムの情報を取得するには、EnvironmentクラスとStatFsクラスのサポートが必要です.
(1)Environmentは、環境変数にアクセスするためのクラスです.
A,getRootDirectory()は,Fileに戻り,Androidのルートディレクトリを取得する.
B,getDataDirectory()は,Fileに戻り,Androidデータディレクトリを取得する.
C,getExternalStorageDirectory()は、Fileに戻り、外部ストレージディレクトリであるSDCardを取得します.D,getExternalStorageState()は,Stringを返し,外部記憶装置の現在の状態文字列を取得する.
E,getDownloadCacheDirectory()は、Fileに戻り、Androidダウンロード/キャッシュコンテンツディレクトリを取得します.
一般的な文字列変数です.getExternalStorageStateの戻り値を例にとります.
A,MEDIA_BAD_REMOVALは、SDCardがアンインストールされる前に削除されたことを示しています. B,MEDIA_CHECKINGは、オブジェクトがディスクチェック中であることを示します. C,MEDIA_MOUNTEDは、オブジェクトが存在し、読み取り/書き込み権限があることを示します.
D,MEDIA_MOUNTED_READ_ONLYは、オブジェクト権限が読み取り専用であることを示します.
E,MEDIA_NOFSは、オブジェクトが空白であるか、サポートされていないファイルシステムを使用していることを示します.
F,MEDIA_REMOVED、SDCardは存在しません.
G,MEDIA_SHAREDは、ストレージメディアがUSBで共有されていることを示しています. H,MEDIA_UNMOUNTABLEは、ストレージメディアがマウントできないことを示しています.
I, MEDIA_UNMOUNTEDは、ストレージメディアがマウントされていないことを示しています.
(2)StatFsクラス、linuxのdfコマンドをシミュレートするクラスであり、メンバー関数は最下位のLinuxファイルシステムを取得する属性関数である.StatFsの一般的な方法:
A,getavailableBlocks()は,Intに戻り,現在のシステムで利用可能な記憶領域のBlock数を取得する.
B,getBlockCount()は,Intに戻り,現在のシステム記憶空間の合計Block数を取得する.
C,getBlockSize()は、Intに戻り、現在のシステムBlockが占めるサイズをバイト単位で取得する
D,getFreeBlocks()は,利用可能空間と予約空間を含む残りの空間(Int)を返す.(3)取得システムとSDカードの利用可能容量及び総総量の一例.
LOGからデータを出力すればよい.M単位である.
(4)メモリファイルシステムにアクセスするには、XMLに権限を追加する必要があります.
==========================================================================================================
SDカードにインストールできるアプリケーションもあれば、できないアプリケーションもあります.この中には一定のルールがあります.どう判断しますか?
GoogleのデフォルトPackageManagerがインストールパッケージを管理するメカニズムは、AdroidManifest.xmlでインストール場所を定義するには、4つのケースがあります.1.インストール場所が定義されていない場合は、携帯電話のメモリにインストールされていることを示します.2.android:installLocation=「auto」は、まず携帯電話のメモリが十分かどうかを確認し、十分であれば携帯電話のメモリにインストールし、足りなければTカードにインストールする.3.android:installLocation="internalOnly"は、携帯電話のメモリにインストールされていることを示します.4.android:installLocation="preferExternal"は、Tカードにインストールされていることを示します.
もしapkのAndroidManifestがxmlではandroid:installLocation=「internalOnly」と定義されています.ユーザーがどこにインストールするかにかかわらず、このapkは携帯電話にインストールされます.android:installLocation=「internalOnly」と定義されているapkは、一般的に携帯電話のメモリにインストールしてから正常に動作するため、プログラムの実行エラーを避けるメリットがあります.
参考原文:http://niufc.iteye.com/blog/1562079参考原文:http://hubingforever.blog.163.com/blog/static/17104057920126284847546/
(1)Environmentは、環境変数にアクセスするためのクラスです.
A,getRootDirectory()は,Fileに戻り,Androidのルートディレクトリを取得する.
B,getDataDirectory()は,Fileに戻り,Androidデータディレクトリを取得する.
C,getExternalStorageDirectory()は、Fileに戻り、外部ストレージディレクトリであるSDCardを取得します.D,getExternalStorageState()は,Stringを返し,外部記憶装置の現在の状態文字列を取得する.
E,getDownloadCacheDirectory()は、Fileに戻り、Androidダウンロード/キャッシュコンテンツディレクトリを取得します.
一般的な文字列変数です.getExternalStorageStateの戻り値を例にとります.
A,MEDIA_BAD_REMOVALは、SDCardがアンインストールされる前に削除されたことを示しています. B,MEDIA_CHECKINGは、オブジェクトがディスクチェック中であることを示します. C,MEDIA_MOUNTEDは、オブジェクトが存在し、読み取り/書き込み権限があることを示します.
D,MEDIA_MOUNTED_READ_ONLYは、オブジェクト権限が読み取り専用であることを示します.
E,MEDIA_NOFSは、オブジェクトが空白であるか、サポートされていないファイルシステムを使用していることを示します.
F,MEDIA_REMOVED、SDCardは存在しません.
G,MEDIA_SHAREDは、ストレージメディアがUSBで共有されていることを示しています. H,MEDIA_UNMOUNTABLEは、ストレージメディアがマウントできないことを示しています.
I, MEDIA_UNMOUNTEDは、ストレージメディアがマウントされていないことを示しています.
(2)StatFsクラス、linuxのdfコマンドをシミュレートするクラスであり、メンバー関数は最下位のLinuxファイルシステムを取得する属性関数である.StatFsの一般的な方法:
A,getavailableBlocks()は,Intに戻り,現在のシステムで利用可能な記憶領域のBlock数を取得する.
B,getBlockCount()は,Intに戻り,現在のシステム記憶空間の合計Block数を取得する.
C,getBlockSize()は、Intに戻り、現在のシステムBlockが占めるサイズをバイト単位で取得する
D,getFreeBlocks()は,利用可能空間と予約空間を含む残りの空間(Int)を返す.(3)取得システムとSDカードの利用可能容量及び総総量の一例.
import android.os.Environment;
import android.os.StatFs;
import java.io.File;
public long getAvailableInternalMemorySize(){
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks*blockSize;
}
public long getTotalInternalMemorySize(){
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks*blockSize;
}
public boolean externalMemoryAvailable(){
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
}
public long getAvailableExternalMemorySize(){
if(externalMemoryAvailable()){
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks*blockSize;
}
else{
return -1;
}
}
public long getTotalExternalMemorySize(){
if(externalMemoryAvailable()){
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks*blockSize;
}
else{
return -1;
}
}
LOGからデータを出力すればよい.M単位である.
Log.i("zhangcheng"," :"+Long.toString(getAvailableInternalMemorySize()/(1024*1024)));
Log.i("zhangcheng"," :"+Long.toString(getTotalInternalMemorySize()/(1024*1024)));
Log.i("zhangcheng"," :"+Long.toString(getAvailableExternalMemorySize()/(1024*1024)));
Log.i("zhangcheng"," :"+Long.toString(getTotalExternalMemorySize()/(1024*1024)));
(4)メモリファイルシステムにアクセスするには、XMLに権限を追加する必要があります.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
==========================================================================================================
SDカードにインストールできるアプリケーションもあれば、できないアプリケーションもあります.この中には一定のルールがあります.どう判断しますか?
GoogleのデフォルトPackageManagerがインストールパッケージを管理するメカニズムは、AdroidManifest.xmlでインストール場所を定義するには、4つのケースがあります.1.インストール場所が定義されていない場合は、携帯電話のメモリにインストールされていることを示します.2.android:installLocation=「auto」は、まず携帯電話のメモリが十分かどうかを確認し、十分であれば携帯電話のメモリにインストールし、足りなければTカードにインストールする.3.android:installLocation="internalOnly"は、携帯電話のメモリにインストールされていることを示します.4.android:installLocation="preferExternal"は、Tカードにインストールされていることを示します.
もしapkのAndroidManifestがxmlではandroid:installLocation=「internalOnly」と定義されています.ユーザーがどこにインストールするかにかかわらず、このapkは携帯電話にインストールされます.android:installLocation=「internalOnly」と定義されているapkは、一般的に携帯電話のメモリにインストールしてから正常に動作するため、プログラムの実行エラーを避けるメリットがあります.
参考原文:http://niufc.iteye.com/blog/1562079参考原文:http://hubingforever.blog.163.com/blog/static/17104057920126284847546/