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
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 来表示. 其他人可以用字母 o 来表示. 所有人可以用字母 a 了表示.
其实就是单词 user, group, other, all 的第一个字母.
比如对一个文件 readme.txt 执行修改其他人对这个文件的权限. 修改位其他人可以写. 可以这样
文件所有者可以用字母 u 表示. 用户所在的组可以用字母 g 来表示. 其他人可以用字母 o 来表示. 所有人可以用字母 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.