anroid 開發小知識點

1 1)代碼 獲取APK安裝路徑和包名   

    List<ApplicationInfo> apps1 = manager.getInstalledApplications(0);   
        for(ApplicationInfo info:apps1){
                Log.i(TAG, "info="+info.sourceDir);//path
                Log.i(TAG, "info2="+info.packageName);
            }

   2)命令 過濾包名:
    adb shell pm list packages -f | grep test

2 java  以key,value形式讀取文件

            Properties defaultProperties = new Properties();
            defaultProperties.load(new FileInputStream(new File(path)));
            for (String key : defaultProperties.stringPropertyNames()) {
                       String value = defaultProperties.getProperty(key);
                    } 

 

   3 獲取GID 和UID

 

            PackageManager manager = getPackageManager();
            ApplicationInfo in =
                    manager.getApplicationInfo(this.getPackageName(),
                            PackageManager.GET_ACTIVITIES);
            Log.i(TAG, "info1=" + in.uid);
           
            PackageInfo pin = manager
                    .getPackageInfo(this.getPackageName(), PackageManager.GET_GIDS);
            if (pin.gids.length > 0) {
                for (int i = 0; i < pin.gids.length; i++) {
                    Log.i(TAG, "info=" + pin.gids[i]);
                }
            }

 4 cursor的循環

 

for(cur.moveToFirst();!cur.isAfterLast();cur.moveToNext()

while(cur.moveToNext())
 5 發送sms 和解析 sms pdu
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
 
     發送sms
SmsManager smsManager = SmsManager.getDefault();
        String text = "中文1222 sssss 中文 rrrrrrrtrtrtewww 你好。。。";
        smsManager.sendTextMessage("139××4", null, text, null, null);
        Toast.makeText(Test.this, "sdddd", Toast.LENGTH_SHORT).show();
 接收
public class SMSReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();  
        Object messages[] = (Object[]) bundle.get("pdus");  
        SmsMessage smsMessage[] = new SmsMessage[messages.length];  
        for (int n = 0; n < messages.length; n++) {  
                smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);  
       }  
        Log.d("tag", smsMessage[0].getMessageBody());
    }
}

     <receiver android:name="com.example.bookreader.SMSReceiver">  
    <intent-filter>  
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />  
    </intent-filter>  
    </receiver>  
 6  java 判斷當前運行的平臺環境
System.out.println(System.getProperty("os.name"));
 例如,我的是Ubuntu,打印出來的結果就是 Linux
7 git add,git commint 之後,發現多git add 了一個文件,這個時候,可以使用 git reset –soft commitId:回  退到某個版本。如果還要提交,直接commit即可
  而  git reset –hard:徹底回退到某個版本,本地的源碼也會變爲上一個版本的內容
 8 沒有root權限時,給某個文件權限並移動
adb push testfile /data/local/tmp
su
mount -o remount,rw /system
chmod 777 testfile
chown root:root testfile
ls testfile -l
例如:使用vpn,修改/system/etc/hosts 文件。保持用戶和權限和原來的文件一致。
9 linux 一些權限
http://hubingforever.blog.163.com/blog/static/171040579201041432333648/
2個操作符. "+" 表示增加權限. "-" 表示消減權限.
文件所有者可以用字母 u 表示. 用戶所在的組可以用字母 g 來表示. 其他人可以用字母 來表示. 所有人可以用字母 a 了表示.
其實就是單詞 user, group, other, all 的第一個字母.
比如對一個文件 readme.txt 執行修改其他人對這個文件的權限. 修改位其他人可以寫. 可以這樣

sudo chmod o+w readme.txt

10 Toast樣式位置的修改

  Toast中定義了對其位置的修改方法,在源碼中可以看到其他模塊有調用的地方。

            Toast cheatSheet= Toast.makeText(getApplicationContext(), "TExt\nwwww", Toast.LENGTH_LONG);
            cheatSheet.setGravity(Gravity.TOP | Gravity.LEFT,0,0);
            TextView textView = new TextView(this);
            textView.setText("Mytest\nTest");
            textView.setTextColor(0xFFFF0000);
            textView.setTextSize(32.0f);
            cheatSheet.setView(textView);
            cheatSheet.show();

 上述例子只是用textview替換原來的背景,同時設置位置左上角

11 Android.mk LOCAL_DEX_PREOPT:apk的odex優化開關

 LOCAL_DEX_PREOPT := false 表示生成apk,而不是apk和odex.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章