Android 開發小知識點收集(隨時更新)
阿新 • • 發佈:2018-11-10
1、獲取手機執行時最大可佔用記憶體
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
Log.d("TAG", "Max memory is " + maxMemory + "KB");
2、改變dialog 在不同視窗內顯示不同的大小
//在dialog.show()之後呼叫
public static void setDialogWindowAttr(Dialog dlg,Context ctx){
Window window = dlg.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.gravity = Gravity.CENTER;
lp.width = LayoutParams.MATH_PARENT;//寬高可設定具體大小
lp.height = LayoutParams.MATH_PARENT;
dlg.getWindow().setAttributes(lp);
}
摘抄自:簡書——MrRock
3、監聽Activity是否顯示在使用者面前
@Override
public void onWindowFocusChanged (boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
}
當Activity展示咋使用者面前則 hasFocus 為 true;
4、成員變數與區域性變數的區別(簡寫:成、局)
1)、類中位置不同:成:類內 局: 方法內夥子方法上;
2)、記憶體中位置不同:成:棧記憶體 局:堆記憶體;
3)、生命週期不同:成:與物件共存亡 局:與方法共存亡;
4)、初始化值不同:成:有預設值 局:無預設值,必須賦值。
5、Java 獲取可變的 uuid
uuid 類似於時間戳 永遠不可重複。
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
6、Android 獲取 WiFi 的 ssid
1)、在 AndroidManifest.xml 檔案內新增許可權
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
2)、需要獲取的位置新增如下程式碼
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
Logger.d("wifiInfo"+wifiInfo.toString());
Logger.d("SSID"+wifiInfo.getSSID());
3)、若不是想獲取當前連線,而是想獲取WIFI設定中的連線
WifiManager.getConfiguredNetworks()
4)、若獲取更多的資訊請檢視這位兄嘚的部落格:Android連續獲取當前所連線WiFi及周圍熱點列表資訊的解決方案 .
7、Android 開啟 WiFi 設定介面
1)、判斷手機是否連線wifi
if (ConnectionDetector.getConnectionType(this) != ConnectionDetector.WIFI) {
//跳轉wifi配置介面
goToWifSetting();
} else {
//wifi已經連線
}
程式碼如下:
Intent intent = new Intent();
if(android.os.Build.VERSION.SDK_INT >= 11){
//Honeycomb
intent .setClassName("com.android.settings", "com.android.settings.Settings$WifiSettingsActivity");
}else{
//other versions
intent .setClassName("com.android.settings", "com.android.settings.wifi.WifiSettings");
}
startActivity(intent);
或者
if (android.os.Build.VERSION.SDK_INT > 10) {
// 3.0以上開啟設定介面,也可以直接用ACTION_WIRELESS_SETTINGS開啟到wifi介面
startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
} else {
startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
}
8、Android 8.0 獲取 wifi 的 ssid
之前用上面6的方法可以完美的獲取wifif裝置的 ssid 但是不能顯示 ssid 即使用者名稱
ConnectivityManager manager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
assert manager != null;
NetworkInfo info = manager.getActiveNetworkInfo();
if (info != null && info.isConnected()) {
String wifiSsid = info.getExtraInfo().substring(1, info.getExtraInfo().length() - 1).trim();
}