kopia lustrzana https://github.com/mik3y/usb-serial-for-android
target sdk 34
Pending intent and broadcast receiver changed according to sdk 34 release notes. Permisssion dialog now shown while fragment is paused.master
rodzic
83646d6955
commit
26a2f9363e
|
@ -3,7 +3,7 @@ plugins {
|
|||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 33
|
||||
compileSdkVersion 34
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
|
@ -12,7 +12,7 @@ android {
|
|||
|
||||
defaultConfig {
|
||||
minSdkVersion 17
|
||||
targetSdkVersion 33
|
||||
targetSdkVersion 34
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
|
||||
missingDimensionStrategy 'device', 'anyDevice'
|
||||
|
|
|
@ -28,6 +28,7 @@ import android.widget.ToggleButton;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver;
|
||||
|
@ -89,12 +90,22 @@ public class TerminalFragment extends Fragment implements SerialInputOutputManag
|
|||
withIoManager = getArguments().getBoolean("withIoManager");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
ContextCompat.registerReceiver(getActivity(), broadcastReceiver, new IntentFilter(INTENT_ACTION_GRANT_USB), ContextCompat.RECEIVER_NOT_EXPORTED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
getActivity().unregisterReceiver(broadcastReceiver);
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
getActivity().registerReceiver(broadcastReceiver, new IntentFilter(INTENT_ACTION_GRANT_USB));
|
||||
|
||||
if(usbPermission == UsbPermission.Unknown || usbPermission == UsbPermission.Granted)
|
||||
if(!connected && (usbPermission == UsbPermission.Unknown || usbPermission == UsbPermission.Granted))
|
||||
mainLooper.post(this::connect);
|
||||
}
|
||||
|
||||
|
@ -104,7 +115,6 @@ public class TerminalFragment extends Fragment implements SerialInputOutputManag
|
|||
status("disconnected");
|
||||
disconnect();
|
||||
}
|
||||
getActivity().unregisterReceiver(broadcastReceiver);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
|
@ -213,7 +223,9 @@ public class TerminalFragment extends Fragment implements SerialInputOutputManag
|
|||
if(usbConnection == null && usbPermission == UsbPermission.Unknown && !usbManager.hasPermission(driver.getDevice())) {
|
||||
usbPermission = UsbPermission.Requested;
|
||||
int flags = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.FLAG_MUTABLE : 0;
|
||||
PendingIntent usbPermissionIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent(INTENT_ACTION_GRANT_USB), flags);
|
||||
Intent intent = new Intent(INTENT_ACTION_GRANT_USB);
|
||||
intent.setPackage(getActivity().getPackageName());
|
||||
PendingIntent usbPermissionIntent = PendingIntent.getBroadcast(getActivity(), 0, intent, flags);
|
||||
usbManager.requestPermission(driver.getDevice(), usbPermissionIntent);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -4,11 +4,11 @@ plugins {
|
|||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 33
|
||||
compileSdkVersion 34
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 17
|
||||
targetSdkVersion 33
|
||||
targetSdkVersion 34
|
||||
consumerProguardFiles 'proguard-rules.pro'
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
|
|
@ -86,9 +86,11 @@ public class UsbWrapper implements SerialInputOutputManager.Listener {
|
|||
}
|
||||
};
|
||||
int flags = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.FLAG_MUTABLE : 0;
|
||||
PendingIntent permissionIntent = PendingIntent.getBroadcast(context, 0, new Intent("com.android.example.USB_PERMISSION"), flags);
|
||||
Intent intent = new Intent("com.android.example.USB_PERMISSION");
|
||||
intent.setPackage(context.getPackageName());
|
||||
PendingIntent permissionIntent = PendingIntent.getBroadcast(context, 0, intent, flags);
|
||||
IntentFilter filter = new IntentFilter("com.android.example.USB_PERMISSION");
|
||||
context.registerReceiver(usbReceiver, filter);
|
||||
context.registerReceiver(usbReceiver, filter, Context.RECEIVER_NOT_EXPORTED);
|
||||
usbManager.requestPermission(serialDriver.getDevice(), permissionIntent);
|
||||
for(int i=0; i<5000; i++) {
|
||||
if(granted[0] != null) break;
|
||||
|
|
Ładowanie…
Reference in New Issue