|
1 | 1 | package io.agora.api.example; |
2 | 2 |
|
| 3 | +import android.Manifest; |
| 4 | +import android.annotation.SuppressLint; |
3 | 5 | import android.app.Activity; |
4 | 6 | import android.content.Intent; |
| 7 | +import android.os.Build; |
5 | 8 | import android.os.Bundle; |
6 | 9 | import android.view.MenuItem; |
7 | 10 | import android.widget.TextView; |
8 | 11 |
|
| 12 | +import androidx.annotation.NonNull; |
9 | 13 | import androidx.annotation.Nullable; |
10 | 14 | import androidx.appcompat.app.ActionBar; |
11 | 15 | import androidx.appcompat.app.AppCompatActivity; |
12 | 16 | import androidx.fragment.app.Fragment; |
13 | 17 |
|
| 18 | +import com.yanzhenjie.permission.AndPermission; |
| 19 | +import com.yanzhenjie.permission.runtime.Permission; |
| 20 | + |
| 21 | +import java.util.ArrayList; |
| 22 | +import java.util.List; |
| 23 | + |
14 | 24 | import io.agora.api.example.common.Constant; |
15 | 25 | import io.agora.api.example.common.model.ExampleBean; |
16 | 26 | import io.agora.api.example.examples.advanced.AdjustVolume; |
@@ -167,9 +177,40 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { |
167 | 177 | fragment = new JoinChannelAudio(); |
168 | 178 | break; |
169 | 179 | } |
170 | | - getSupportFragmentManager().beginTransaction() |
171 | | - .replace(R.id.fragment_Layout, fragment) |
172 | | - .commit(); |
| 180 | + runOnPermissionGranted(()-> { |
| 181 | + getSupportFragmentManager().beginTransaction() |
| 182 | + .replace(R.id.fragment_Layout, fragment) |
| 183 | + .commit(); |
| 184 | + }); |
| 185 | + } |
| 186 | + |
| 187 | + @SuppressLint("WrongConstant") |
| 188 | + private void runOnPermissionGranted(@NonNull Runnable runnable){ |
| 189 | + List<String> permissionList = new ArrayList<>(); |
| 190 | + permissionList.add(Permission.READ_EXTERNAL_STORAGE); |
| 191 | + permissionList.add(Permission.WRITE_EXTERNAL_STORAGE); |
| 192 | + permissionList.add(Permission.RECORD_AUDIO); |
| 193 | + permissionList.add(Permission.CAMERA); |
| 194 | + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){ |
| 195 | + permissionList.add(Manifest.permission.BLUETOOTH_CONNECT); |
| 196 | + } |
| 197 | + |
| 198 | + String[] permissionArray = new String[permissionList.size()]; |
| 199 | + permissionList.toArray(permissionArray); |
| 200 | + |
| 201 | + if (AndPermission.hasPermissions(this,permissionArray)) |
| 202 | + { |
| 203 | + runnable.run(); |
| 204 | + return; |
| 205 | + } |
| 206 | + // Request permission |
| 207 | + AndPermission.with(this).runtime().permission( |
| 208 | + permissionArray |
| 209 | + ).onGranted(permissions -> |
| 210 | + { |
| 211 | + // Permissions Granted |
| 212 | + runnable.run(); |
| 213 | + }).start(); |
173 | 214 | } |
174 | 215 |
|
175 | 216 | @Override |
|
0 commit comments