Ⅰ 求問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代碼邏輯了。如果不合規則,你要提示給用戶知道哪裡不合規則
如果輸入信息的格式符合你們定的規則,這時你就需要向伺服器驗證該用戶名是否存在,如果已存在,提示用戶重新選擇一個用戶名,如果不存在,表示該用戶名可用,這時你就需要把用戶的注冊信息傳遞給伺服器,由伺服器端負責將注冊信息插入資料庫,以便用戶登錄時進行身份驗證

Ⅲ 安卓4.4.2如何寫入abd指令隱藏導航欄代碼

搜一下:安卓4.4.2如何寫入abd指令隱藏導航欄代碼

Ⅳ 如何通過java代碼寫入字元串到安卓粘貼板中

import java.io.File; import java.io.OutputStream; import java.io.FileOutputStream; public class TestFile { public static void main(String[] args) throws Exception{ //在d盤上創建一個名為testfile的文本文件 File f = new File("D:"+File.separator+"testfile.txt"); //用FileOutputSteam包裝文件,並設置文件可追加 OutputStream out = new FileOutputStream(f,true); //字元數組 String[] str = {"shanghai","beijing","guangdong","xiamen"}; for(int i =0; i<str.length; i++){ out.write(str[i].getBytes()); //向文件中寫入數據 out.write('\r'); // \r\n表示換行 out.write('\n'); } out.close(); //關閉輸出流 System.out.println("寫入成功!"); } }

Ⅳ Android 怎樣在應用程序中向文件里寫入數據

  1. Android 怎樣在應用程序中向文件里寫入數據?在AndroidManifest.xml中添加, <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />,解決!

  2. 另外了解一下android的數據存儲方式:文件流的讀取,SQLite,Content Provider以及Preference.。 註:resource和assets中的文件用戶方面是只可以讀取不能夠進行寫的操作的。
    Content Provider作為程序之間唯一共享數據途徑,用在這里不是很合適。所以,
    第一種方式,使用FileInputStream,FileOutputStreami類實現文件I/O操作,直接往手機中存儲數據。
    第二種方式,使用SQLite,通過SQLiteDatabase類中方法操作數據。
    第三種方式,Preference用於存儲簡單數據類型的數據,一些設置信息的保存。個人認為用在這里最合適。 它利用鍵值對存儲的。例:
    存儲:SharedPreferences.Editor editor =sp.edit();
    editor.putString(KEY_TEXT,"yonghu");
    editor.commit();
    獲取 :sp =getPreferences(MODE_PRIVATE);

    String result =sp.getString(KEY_TEXT,null)

  3. Android保存數據幾種常用方法解析

    它應用於手機中能夠幫助我們實現許多需求。比如今天為大家介紹的Android保存數據,就是其中一個比較重要的操作技巧。Android組件相關概念總結Android傳值方法細講Android橫豎屏切換正確實現方式分享Android開發環境相關配置概覽Android NDK具體作用講解對於我們所熟悉的大部分軟體都有一個比較典型的特點,應用現有的數據根據不同的需求來得到相應的結果。例如,我們最常用的Officeword、Excel、PowerPoint等辦公軟體,它們都是幫助我們完成某種特定的需求,同時由其所產生的數據或者文檔又可以被其它軟體所讀取和做進一步的優化等等,在這個層面上可以看成是這些軟體通過相同的文件標准來共享數據。但是對於Android最大的不同點在於,其平台上的應用軟體所存儲的數據或者文件是私有,僅僅可以通過它自身才可以訪問其所包含的數據資源。那麼基於這樣的限制,該如何在Android平台上實現不同程序間的數據共享呢?答案非常簡單 – 應用ContentProviders,這是建立在Android平台上用於定義統一的數據標准。Android提供了針對不同數據類型的ContentProviders來滿足各種需要。例如:Image、Audio、Video和通訊錄信息類等。閱讀下邊的文檔之前,最好先熟悉Content Providers的概念。有了上邊所提到Content Providers,接下來就要處理在共享文件過程中的存儲環節了,這里有四種方法分別適用於不同情況的需求。它們都各自有相應的優缺點,所以當開發者決定選擇應用哪種方法之前,先要考慮當前所操作的情況是否適合於所選擇的方法。Preferences Files Databases Network 接下來將依次介紹上訴四個Android保存數據方法:Preferences從其保存數據的結構來分析,這是一個相對較輕量級的存儲數據的方法。類似於我們常用的ini文件保存軟體初始化設置,同樣在Android平台常用於存儲較簡單的參數設置。例如,可以通過它保存上一次用戶所作的修改或者自定義參數設定,當再次啟動程序後依然保持原有的設置。通過Context.getSharedPreferences()方法來讀寫數值,這個方法通過設置name來使得同一個程序內的其它模塊共享數據。如果不需要與其它模塊共享數據,可以使用Activity.getPreferences()方法保持數據私有。需要著重強調一點,無法直接在多個程序間共享Preferences數據(不包括使用Content Providers)。通過一個實例來了解實際使用方法:import android.app.Activity; import android.content.SharedPreferences; public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; . . . . Override protected void onCreate(Bundle state){ super.onCreate(state); . . . . // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); } @Override protected void onStop(){ super.onStop(); // Save user preferences. We need an Editor object to // make changes. All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Don't forget to commit your edits!!! editor.commit(); } } Files從這是第二種方法,可以在設備本身的存儲設備或者外接的存儲設備中創建用於保存數據的文件。同樣在默認的狀態下,文件是不能在不同的程序間共享。寫文件:調用Context.openFileOutput()方法根據指定的路徑和文件名來創建文件,這個方法會返回一個FileOutputStream對象。讀取文件:調用Context.openFileInput()方法通過制定的路徑和文件名來返回一個標準的Java FileInputStream對象。
    (注意:在其它程序中將無法應用相同的路徑和文件名來操作文件)另外編譯程序之前,在res/raw/tempFile中建立一個static文件,這樣可以在程序中通過Resources.openRawResource (R.raw.myDataFile)方法同樣返回一個InputStream對象,直接讀取文件內容。Databases在Android API中包括了應用SQLite databases的介面,每個程序所創建的資料庫都是私有的,換句話說,程序間無法相互訪問對方的資料庫。在程序中創建SQLiteDatabase對象,其中包含了大部分與database交互的方法,例如:讀取數據或者管理當前數據。可以應用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法來創建新的資料庫。對於SQLitedatabase而言,其強大和方便的功能為Android提供了強有力的存儲功能。特別是存儲一些復雜的數據結構,例如:Android特別為通訊錄創建了特有的數據類型,其中包含了非常多的子集而且涵蓋了大部分的數據類型 「First Name」 「Last Name」 「PhoneNumber」和「Photo」等。Android可以通過Sqlite3 database tool來查看指定資料庫中表的內容,直接運行SQL命令來快速便捷的直接操作SQLite database。

Ⅵ 安卓開發中能不能把對象寫入文件並讀取出來如果可以的話應該怎麼操作最好給個示例

可以!去下載RE管理器不過要獲取許可權才行哦!

Ⅶ 我的安卓系統禁止應用程序寫入怎麼解決辦法

在你手機中的軟體許可權管理中重新授權就可以解決了
一般是在你手機的設置和自帶的安全中心中的
如果在手機上找不到的話那就得root手機了
可以先用pc版的應用寶root手機
步驟是:先打開電腦端軟體-連接手機-打開手機USB調試-連接成功-工具箱-一鍵root
獲取到許可權之後,拔下手機,然後手機桌面上會有一個授權管理的
打開以後在里邊的軟體許可權管理中重新授權
希望可以對你有幫助

Ⅷ 求一個簡單存儲android數據的java代碼,就是將一個數據存入一個txt文件即可

//添加文件寫入和創建的許可權
Stringaaa=Environment.getExternalStorageDirectory()
+File.separator+"aaa.txt";
Filefile=newFile(aaa);
try{
if(!file.exists()){
file.createNewFile();
}
FileWriterpw=newFileWriter(file,true);
pw.write(aaa);
pw.flush();
pw.close();
}catch(IOExceptione){
e.printStackTrace();
}

Ⅸ AndroidTv開發怎麼把自己修改的代碼寫進系統

要看你的目的是什麼了.


* 如果你是需要替換原來的 launcher 應用,那麼首先你需要滿足以下兩個條件:

  1. 你有該TV設備的 adb shell root 許可權

  2. 你持有該TV設備的系統簽名

以上兩個條件滿足了的話,以下是步驟:

  1. 編譯你的代碼,應用包名必須和原來一樣.編譯完後用系統簽名文件進行簽名.

  2. adb shell 進入 /system 分區(必須有root許可權才能進入),在

    以下兩個目錄(早期版本只有第一個目錄):

    /system/app

    /system/priv-app/

    找到你要替換的那個應用的位置.在 adb shell 下可以用 pm 這個內置命令方便的根據包名找apk位置,不展開,如需要請追問.

  3. /system分區默認是只讀的,必須使用 adb remount 命令,或者在 adb shell 下使用 mount 命令,將此分區重新掛載為可讀分區,才能寫入.具體不展開,如果需要知道命令的具體格式可以再追問.

  4. 用 adb push 命令將原有的那個應用替換為你編譯的那個應用,或者先將你編譯的 apk 拷貝進設備,再在 adb shell 下用 cp 命令替換原應用.兩種方法都需要root許可權.

系統會實時監視 /system/app 和 /system/priv-app/ 這兩個目錄的變化,所以在你替換了原有位置的那個應用後,系統立刻就會自動識別這個應用. 一般應用推進去立刻就可以使用了. launcher這類特殊的應用有可能會造成系統異常,不過重啟一次肯定也就可以運行了(前提是你自己的修改沒有問題).

之所以需要系統簽名,是因為系統會對系統應用的簽名和系統自身簽名比對,不一樣的話是無法運行的.


* 如果你的目的僅僅是為了研究代碼,並不需要替換原來的launcher,那就簡單啦.步驟:

  1. 把你修改的launcher的應用包名改一下,不要和原來系統的那個包名一樣就行.

  2. 如果你可以對這台TV設備連接adb調試,那就直接用eclipse編譯並在此設備上運行就可以了.adb是可以由wifi無線連接的,一般電視開發都是用的adb無線連接.

  3. 如果你無法連接adb調試,那就弄一個自己的apk簽名,然後用此簽名打包apk,然後拷貝到這台TV設備上進行安裝就可以了.

    這里用到簽名是因為調試簽名不能用作apk安裝,必須是正式簽名.


以上.

Ⅹ Android手機中如何寫入NFC程序怎麼能讀到一張卡

Android讀寫NFC的步驟:
1.首先要在AndroidManifest.xml中聲明如下配置信息:
使用<uses-permission>元素允許設備訪問NFC硬體:
<uses-permission android:name="android.permission.NFC" />

2.使用<uses-sdk>元素設置最小SDK版本:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />

3.NFC TAG的發布系統:
當android設備掃描到一個NFC標簽時,會自動尋找最適合的Activity來處理這個TAG,如果有多個Activity滿足條件的話,會讓用戶來選擇到底使用哪一個Activity來處理,可以理解為就是簡單的事件響應與事件處理。

4.如何讓一個Activity監聽 」當掃描到NFC標簽時」 的這一個事件呢?使用intent filter。
可以理解為當檢測到一個NFC標簽時,系統自動創建一個相關的Intent對象,含有響應intent filter的Activity將處理這個Intent。
其中,intent filter聲明如下:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" ></action>
<category android:name="android.intent.category.DEFAULT" ></category>
<data android:mimeType="text/plain" ></data>
</intent-filter>

5.讀取NFC標簽中NDEF格式的文本信息:
先判斷手機支不支持NFC功能,若支持,是否已設置開啟狀態。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_write);
nfcTView=(TextView)findViewById(R.id.info_tv);
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null) {
nfcTView.setText("設備不支持NFC!");
finish();
return;
}
if (nfcAdapter!=null&&!nfcAdapter.isEnabled()) {
nfcTView.setText("請在系統設置中先啟用NFC功能!");
finish();
return;
}
}

6.讀取NFC卡的內容
private boolean readFromTag(Intent intent){
Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage mNdefMsg = (NdefMessage)rawArray[0];
NdefRecord mNdefRecord = mNdefMsg.getRecords()[0];
try {
if(mNdefRecord != null){
readResult = new String(mNdefRecord.getPayload(),"UTF-8");
return true;
}
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
};
return false;
}