導航:首頁 > 操作系統 > android獲取文件屬性

android獲取文件屬性

發布時間:2022-11-06 21:31:29

android怎麼在代碼里獲得系統文件的讀寫許可權

本來以為就沒有辦法在應用程序這一層改系統時間了,後來在網上搜了好久,知道這個目的還是可以達到的。
第一個方法簡單點,不過需要在Android系統源碼的環境下用make來編譯
1. 在應用程序的AndroidManifest.xml中的manifest節點中加入
android:sharedUserId="android.uid.system"這個屬性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行
3. 使用mm命令來編譯,生成的apk就有修改系統時間的許可權了。
第二個辦法麻煩點,不過不用開虛擬機跑到源碼環境下用make來編譯:
1. 同上,加入android:sharedUserId="android.uid.system"這個屬性。
2. 使用eclipse編譯出apk文件,但是這個apk文件是不能用的。
3. 用壓縮軟體打開apk文件,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個文件。
4. 使用目標系統的platform密鑰來重新給apk文件簽名。這步比較麻煩,
首先找到密鑰文件,在我的Android源碼目錄中的位置
是"build argetproctsecurity",下面的platform.pk8和platform.x509.pem
兩個文件。
然後用Android提供的Signapk工具來簽名,signapk的源代碼是
在"build oolssignapk"下,
用法為"signapk platform.x509.pem platform.pk8 input.apk output.apk",
文件名最好使用絕對路徑防止找不到,也可以修改源代碼直接使用。
這樣最後得到的apk和第一個方法是一樣的。
最後解釋一下原理,首先加入android:sharedUserId="android.uid.system"這個屬性。通過Shared User id,擁有同一個User id的多個APK可以配置成運行在同一個進程中。那麼把程序的UID配成android.uid.system,也就是要讓程序運行在系統進程中,這樣就有許可權來修改系統時間了。
只是加入UID還不夠,如果這時候安裝APK的話發現無法安裝,提示簽名不符,原因是程序想要運行在系統進程中還要有目標系統的platform
key,就是上面第二個方法提到的platform.pk8和platform.x509.pem兩個文件。用這兩個key簽名後apk才真正可以放入系統進程中。第一個方法中加入LOCAL_CERTIFICATE := platform其實就是用這兩個key來簽名。這也有一個問題,就是這樣生成的程序只有在原始的Android系統或者是自己編譯的系統中才可以用,因為這樣的系統才可以拿到 platform.pk8和platform.x509.pem兩個文件。要是別家公司做的Android上連安裝都安裝不了。試試原始的Android 中的key來簽名,程序在模擬器上運行OK,不過放到G3上安裝直接提示"Package ... has no signatures that match those in shared user android.uid.system",這樣也是保護了系統的安全。

㈡ android開發中,在activity中如何獲取xml中控制項的屬性

android 獲取XML文件有幾種方式 1.R.文件名.文件里的數據名
2.gentRu...
3.如果在控制項屬性那直接引用就行

㈢ Android獲取文件類型是圖片還是視頻

類型是文件的視頻,右擊——屬性——選視頻播放器——確定,就可以打開看了。(注意播放器的適應性,多選幾個試試)

㈣ 如何獲取APK文件屬性

咱倆問題一樣 你會時教我吧

㈤ android怎麼在代碼里獲得系統文件的讀寫許可權

本來以為就沒有辦法在應用程序這一層改系統時間了,後來在網上搜了好久,知道這個目的還是可以達到的。
第一個方法簡單點,不過需要在Android系統源碼的環境下用make來編譯:
1. 在應用程序的AndroidManifest.xml中的manifest節點中加入
android:sharedUserId="android.uid.system"這個屬性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行
3. 使用mm命令來編譯,生成的apk就有修改系統時間的許可權了。
第二個辦法麻煩點,不過不用開虛擬機跑到源碼環境下用make來編譯:
1. 同上,加入android:sharedUserId="android.uid.system"這個屬性。
2. 使用eclipse編譯出apk文件,但是這個apk文件是不能用的。
3. 用壓縮軟體打開apk文件,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個文件。
4. 使用目標系統的platform密鑰來重新給apk文件簽名。這步比較麻煩,
首先找到密鑰文件,在我的Android源碼目錄中的位置
是"build argetproctsecurity",下面的platform.pk8和platform.x509.pem
兩個文件。
然後用Android提供的Signapk工具來簽名,signapk的源代碼是
在"build oolssignapk"下,
用法為"signapk platform.x509.pem platform.pk8 input.apk output.apk",
文件名最好使用絕對路徑防止找不到,也可以修改源代碼直接使用。
這樣最後得到的apk和第一個方法是一樣的。
最後解釋一下原理,首先加入android:sharedUserId="android.uid.system"這個屬性。通過Shared User id,擁有同一個User id的多個APK可以配置成運行在同一個進程中。那麼把程序的UID配成android.uid.system,也就是要讓程序運行在系統進程中,這樣就有許可權來修改系統時間了。
只是加入UID還不夠,如果這時候安裝APK的話發現無法安裝,提示簽名不符,原因是程序想要運行在系統進程中還要有目標系統的platform
key,就是上面第二個方法提到的platform.pk8和platform.x509.pem兩個文件。用這兩個key簽名後apk才真正可以放入系統進程中。第一個方法中加入LOCAL_CERTIFICATE := platform其實就是用這兩個key來簽名。這也有一個問題,就是這樣生成的程序只有在原始的Android系統或者是自己編譯的系統中才可以用,因為這樣的系統才可以拿到 platform.pk8和platform.x509.pem兩個文件。要是別家公司做的Android上連安裝都安裝不了。試試原始的Android 中的key來簽名,程序在模擬器上運行OK,不過放到G3上安裝直接提示"Package ... has no signatures that match those in shared user android.uid.system",這樣也是保護了系統的安全。

㈥ android如何獲取本地文件屬性信息

通過主動的方式通知系統我們需要文件列表,要向系統發送廣播

java">sendBroadcast(newIntent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse(「file://」
+Environment.getExternalStorageDirectory())));

然後通過接收器獲取系統文列表


{
privatefinalstaticStringTAG=」MediaScannerReceiver」;
@Override
publicvoidonReceive(Contextcontext,Intentintent){
Stringaction=intent.getAction();
Uriuri=intent.getData();
StringexternalStoragePath=Environment.getExternalStorageDirectory().getPath();
if(action.equals(Intent.ACTION_BOOT_COMPLETED)){
//scaninternalstorage
scan(context,MediaProvider.INTERNAL_VOLUME);
}else{
if(uri.getScheme().equals(「file」)){
//
Stringpath=uri.getPath();
if(action.equals(Intent.ACTION_MEDIA_MOUNTED)&&
externalStoragePath.equals(path)){
scan(context,MediaProvider.EXTERNAL_VOLUME);
}elseif(action.equals(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)&&
path!=null&&path.startsWith(externalStoragePath+」/」)){
scanFile(context,path);
}
}
}
}
privatevoidscan(Contextcontext,Stringvolume){
Bundleargs=newBundle();
args.putString(「volume」,volume);
context.startService(
newIntent(context,MediaScannerService.class).putExtras(args));
}
privatevoidscanFile(Contextcontext,Stringpath){
Bundleargs=newBundle();
args.putString(「filepath」,path);
context.startService(
newIntent(context,MediaScannerService.class).putExtras(args));
}
}

㈦ Android如何獲取文件的最後訪問時間,創建時間

資料庫中的文件的話,要adb shell進去查看資料庫有沒有該欄位。存儲卡上的文件的話,java中沒有獲取文件創建事件的介面。

一、 從resource中的raw文件夾中獲取文件並讀取數據(資源文件只能讀不能寫)
String res = "";

try{

InputStream in = getResources().openRawResource(R.raw.bbi);

//在\Test\res\raw\bbi.txt,

int length = in.available();

byte [] buffer = new byte[length];

in.read(buffer);

//res = EncodingUtils.getString(buffer, "UTF-8");

//res = EncodingUtils.getString(buffer, "UNICODE");

res = EncodingUtils.getString(buffer, "BIG5");

//依bbi.txt的編碼類型選擇合適的編碼,如果不調整會亂碼

in.close();

}catch(Exception e){

e.printStackTrace();

}

myTextView.setText(res);//把得到的內容顯示在TextView上

二、 從asset中獲取文件並讀取數據(資源文件只能讀不能寫)
String fileName = "yan.txt"; //文件名字

String res="";

try{

InputStream in = getResources().getAssets().open(fileName);

// \Test\assets\yan.txt這里有這樣的文件存在

int length = in.available();

byte [] buffer = new byte[length];

in.read(buffer);

res = EncodingUtils.getString(buffer, "UTF-8");

}catch(Exception e){

e.printStackTrace();

}

三、 從sdcard中去讀文件,首先要把文件通過\android-sdk-windows\tools\adb.exe把本地計算機上的文件到sdcard上去,adb.exe push e:/Y.txt /sdcard/, 不可以用adb.exe push e:\Y.txt \sdcard\ 同樣: 把模擬器上的文件到本地計算機上用: adb pull ./data/data/com.tt/files/Test.txt e:/

String fileName = "/sdcard/Y.txt";

//也可以用String fileName = "mnt/sdcard/Y.txt";

String res="";

try{

FileInputStream fin = new FileInputStream(fileName);

//FileInputStream fin = openFileInput(fileName);

//用這個就不行了,必須用FileInputStream

int length = fin.available();

byte [] buffer = new byte[length];

fin.read(buffer);

res = EncodingUtils.getString(buffer, "UTF-8");

fin.close();

}catch(Exception e){

e.printStackTrace();

}

myTextView.setText(res);

㈧ android中如何獲取manifest文件中的Priority屬性

android:priority
這個屬性用於給過濾器設置一個優先順序。其父組件能夠通過優先順序來依次處理過濾器所描述類型的Intent對象。這個屬性對Activity和Broadcast Receiver對象有意義:
1. 它提供了Activity能夠如何響應跟過濾器匹配的Intent對象請求的信息(相對與其他的也能響應這個Intent請求的Activity)。當一個Intent對象請求能夠被多個帶有不同優先順序的Activity處理時,Android系統只考慮把高優先順序的Intent過濾器作為潛在的Intent對象請求目標。
2. 它控制了Broadcast Receiver執行接收廣播消息的順序。高優先順序的過濾器會優先調用。(這個順序只應用與同步消息,對於非同步消息會忽略優先順序的設置。)
只有真正想要給接收廣播消息的過濾器施加一個特定順序,或者要強制Android來應用另外一個Activity,才會使用這個屬性。
這個屬性值必須是一個整數,如:100,數字越大,優先順序越高。
被引入的版本(INTRODUCED IN):

如果你想獲得Activity的優先順序的話 可以去查查當前Activity的文檔,肯定 是有的。

安卓系統如何更改文件的屬性

安卓系統更改文件的屬性,需要先取得root許可權,才能更改,如下步驟:
1,手機要root,沒有root的手機,無論手機或是電腦的文件管理器都不能取得手機系統的最高許可權,無法修改、替換系統核心文件,手機root的方式有很多,要選擇自己手機合適的方式;
2、手機端修改系統文件需要用到RE管理器,電腦端修改手機系統文件同樣需要RE管理器,所以電腦要先安裝pc版的RE管理器;更重要的一點是電腦端要安裝好所控手機的usb驅動;
3、無論手機端或電腦端的RE管理器運行都要先取得系統許可權,運行時手機端會有許可權提示,需點擊確認,RE管理器就可以運行了;
4、RE管理器在修改系統、替換文件後,要同時修改文件的許可權,可參照這個教程(電腦端RE是一樣的):

㈩ Android的java怎麼獲取文件大小

android中的java獲取文件大小的方法:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
public class FileContent {
private String path = "F:\\下載說明.txt";
public FileContent() throws IOException
{
File f = new File(path);
FileReader fileReader = new FileReader(f);
BufferedReader br = new BufferedReader(fileReader);
String str;
while((str = br.readLine() ) != null)
{
System.out.println(str);
}
System.out.println(new FileInputStream(new File(path)).available() / 1024 / 1024 +"M");
}

public static void main(String[] args) {
try {
new FileContent();
} catch (IOException e) {
e.printStackTrace();
}
}
}

閱讀全文

與android獲取文件屬性相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163