Commit f235a6ec authored by YONG-LIN SU's avatar YONG-LIN SU

加入 Android 11 兼容

parent e0991649
...@@ -7,11 +7,11 @@ ...@@ -7,11 +7,11 @@
<deviceKey> <deviceKey>
<Key> <Key>
<type value="SERIAL_NUMBER" /> <type value="SERIAL_NUMBER" />
<value value="JCAXB7655018EJ6" /> <value value="577125220043" />
</Key> </Key>
</deviceKey> </deviceKey>
</Target> </Target>
</runningDeviceTargetSelectedWithDropDown> </runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-08-05T01:02:16.862069400Z" /> <timeTargetWasSelectedWithDropDown value="2022-08-05T13:23:48.147304600Z" />
</component> </component>
</project> </project>
\ No newline at end of file
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "ecom.android.newparkapp",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "Dev Ver.0.8.0",
"outputFile": "app-release.apk"
}
],
"elementType": "File"
}
\ No newline at end of file
...@@ -3,6 +3,13 @@ ...@@ -3,6 +3,13 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="ecom.android.newparkapp"> package="ecom.android.newparkapp">
<!-- Android 11 調用相機拍照意圖 註冊 -->
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
...@@ -17,6 +24,7 @@ ...@@ -17,6 +24,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!-- android 11 管理所有檔案權限 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<application <application
......
...@@ -3,8 +3,11 @@ package ecom.android.newparkapp.view; ...@@ -3,8 +3,11 @@ package ecom.android.newparkapp.view;
import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
import static android.Manifest.permission.ACCESS_FINE_LOCATION; import static android.Manifest.permission.ACCESS_FINE_LOCATION;
import static android.Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS; import static android.Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS;
import static android.Manifest.permission.MANAGE_EXTERNAL_STORAGE;
import static android.Manifest.permission.READ_EXTERNAL_STORAGE; import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static android.os.Environment.isExternalStorageManager;
import static android.provider.Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION;
import static ecom.android.newparkapp.Common.copyModelFromAssetsToData; import static ecom.android.newparkapp.Common.copyModelFromAssetsToData;
...@@ -12,7 +15,9 @@ import android.content.Intent; ...@@ -12,7 +15,9 @@ import android.content.Intent;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.icu.util.BuddhistCalendar; import android.icu.util.BuddhistCalendar;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcelable;
import android.widget.Toast; import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.ActivityResultLauncher;
...@@ -38,6 +43,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -38,6 +43,7 @@ public class MainActivity extends AppCompatActivity {
private T01SettingViewModel t01SettingViewModel; private T01SettingViewModel t01SettingViewModel;
private ActivityResultLauncher<String[]> requestPermissionLauncher; private ActivityResultLauncher<String[]> requestPermissionLauncher;
private ActivityResultLauncher requestAllFilesAccessPermissionLauncher; // Android 11 以上需申請較高權限
private String[] permissions = new String[]{ WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE, private String[] permissions = new String[]{ WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE,
ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION, ACCESS_LOCATION_EXTRA_COMMANDS}; ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION, ACCESS_LOCATION_EXTRA_COMMANDS};
private MutableLiveData<Boolean> hasPermissions = new MutableLiveData<>(); private MutableLiveData<Boolean> hasPermissions = new MutableLiveData<>();
...@@ -56,7 +62,9 @@ public class MainActivity extends AppCompatActivity { ...@@ -56,7 +62,9 @@ public class MainActivity extends AppCompatActivity {
// 註冊權限請求結果處理 // 註冊權限請求結果處理
resultLauncherRegister(); resultLauncherRegister();
// 檢查權限 // 檢查權限
permissionRequest(); //permissionRequest();
// 兼容 Android 11 權限檢查
permissionRequestAndroid11();
// 監聽權限驗證變化 // 監聽權限驗證變化
// 有權限再綁定按鈕功能 // 有權限再綁定按鈕功能
...@@ -108,6 +116,17 @@ public class MainActivity extends AppCompatActivity { ...@@ -108,6 +116,17 @@ public class MainActivity extends AppCompatActivity {
} }
} }
private void permissionRequestAndroid11(){
// TODO: 2022/8/8 針對 Android 11以上版本,權限進行兼容
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (!isExternalStorageManager()) {
requestAllFilesAccessPermissionLauncher.launch(new Intent(ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION));
return;
}
}
permissionRequest();
}
/** /**
* @return 檢查所有權限 * @return 檢查所有權限
*/ */
...@@ -138,6 +157,10 @@ public class MainActivity extends AppCompatActivity { ...@@ -138,6 +157,10 @@ public class MainActivity extends AppCompatActivity {
} }
); );
requestAllFilesAccessPermissionLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
permissionRequest();
});
settingActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { settingActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
// 重新讀取setting // 重新讀取setting
t01SettingViewModel.restorePrefs(); t01SettingViewModel.restorePrefs();
......
File added
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment