mirror of
				https://github.com/mik3y/usb-serial-for-android
				synced 2025-10-31 02:17:23 +00:00 
			
		
		
		
	manage USB permission intent
This commit is contained in:
		
							parent
							
								
									6a50595274
								
							
						
					
					
						commit
						ac1fe40793
					
				| @ -22,7 +22,11 @@ | |||||||
| package com.hoho.android.usbserial.examples; | package com.hoho.android.usbserial.examples; | ||||||
| 
 | 
 | ||||||
| import android.app.Activity; | import android.app.Activity; | ||||||
|  | import android.app.PendingIntent; | ||||||
|  | import android.content.BroadcastReceiver; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
|  | import android.content.Intent; | ||||||
|  | import android.content.IntentFilter; | ||||||
| import android.hardware.usb.UsbDevice; | import android.hardware.usb.UsbDevice; | ||||||
| import android.hardware.usb.UsbManager; | import android.hardware.usb.UsbManager; | ||||||
| import android.os.AsyncTask; | import android.os.AsyncTask; | ||||||
| @ -39,6 +43,7 @@ import android.widget.ArrayAdapter; | |||||||
| import android.widget.ListView; | import android.widget.ListView; | ||||||
| import android.widget.ProgressBar; | import android.widget.ProgressBar; | ||||||
| import android.widget.TextView; | import android.widget.TextView; | ||||||
|  | import android.widget.Toast; | ||||||
| import android.widget.TwoLineListItem; | import android.widget.TwoLineListItem; | ||||||
| 
 | 
 | ||||||
| import com.hoho.android.usbserial.driver.UsbSerialDriver; | import com.hoho.android.usbserial.driver.UsbSerialDriver; | ||||||
| @ -59,12 +64,14 @@ public class DeviceListActivity extends Activity { | |||||||
|     private final String TAG = DeviceListActivity.class.getSimpleName(); |     private final String TAG = DeviceListActivity.class.getSimpleName(); | ||||||
| 
 | 
 | ||||||
|     private UsbManager mUsbManager; |     private UsbManager mUsbManager; | ||||||
|  |     private UsbSerialPort mSerialPort; | ||||||
|     private ListView mListView; |     private ListView mListView; | ||||||
|     private TextView mProgressBarTitle; |     private TextView mProgressBarTitle; | ||||||
|     private ProgressBar mProgressBar; |     private ProgressBar mProgressBar; | ||||||
| 
 | 
 | ||||||
|     private static final int MESSAGE_REFRESH = 101; |     private static final int MESSAGE_REFRESH = 101; | ||||||
|     private static final long REFRESH_TIMEOUT_MILLIS = 5000; |     private static final long REFRESH_TIMEOUT_MILLIS = 5000; | ||||||
|  |     public static final String INTENT_ACTION_GRANT_USB = BuildConfig.APPLICATION_ID + ".GRANT_USB"; | ||||||
| 
 | 
 | ||||||
|     private final Handler mHandler = new Handler() { |     private final Handler mHandler = new Handler() { | ||||||
|         @Override |         @Override | ||||||
| @ -81,6 +88,7 @@ public class DeviceListActivity extends Activity { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|     }; |     }; | ||||||
|  |     private BroadcastReceiver mUsbReceiver; | ||||||
| 
 | 
 | ||||||
|     private List<UsbSerialPort> mEntries = new ArrayList<UsbSerialPort>(); |     private List<UsbSerialPort> mEntries = new ArrayList<UsbSerialPort>(); | ||||||
|     private ArrayAdapter<UsbSerialPort> mAdapter; |     private ArrayAdapter<UsbSerialPort> mAdapter; | ||||||
| @ -89,11 +97,25 @@ public class DeviceListActivity extends Activity { | |||||||
|     public void onCreate(Bundle savedInstanceState) { |     public void onCreate(Bundle savedInstanceState) { | ||||||
|         super.onCreate(savedInstanceState); |         super.onCreate(savedInstanceState); | ||||||
|         setContentView(R.layout.main); |         setContentView(R.layout.main); | ||||||
|  |         final Context context = this; | ||||||
| 
 | 
 | ||||||
|         mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE); |         mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE); | ||||||
|         mListView = (ListView) findViewById(R.id.deviceList); |         mListView = findViewById(R.id.deviceList); | ||||||
|         mProgressBar = (ProgressBar) findViewById(R.id.progressBar); |         mProgressBar = findViewById(R.id.progressBar); | ||||||
|         mProgressBarTitle = (TextView) findViewById(R.id.progressBarTitle); |         mProgressBarTitle = findViewById(R.id.progressBarTitle); | ||||||
|  | 
 | ||||||
|  |         mUsbReceiver = new BroadcastReceiver() { | ||||||
|  |             @Override | ||||||
|  |             public void onReceive(Context context, Intent intent) { | ||||||
|  |                 if(intent.getAction().equals(INTENT_ACTION_GRANT_USB)) { | ||||||
|  |                     if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) { | ||||||
|  |                         showConsoleActivity(mSerialPort); | ||||||
|  |                     } else { | ||||||
|  |                         Toast.makeText(context, "USB permission denied", Toast.LENGTH_SHORT).show(); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         }; | ||||||
| 
 | 
 | ||||||
|         mAdapter = new ArrayAdapter<UsbSerialPort>(this, |         mAdapter = new ArrayAdapter<UsbSerialPort>(this, | ||||||
|                 android.R.layout.simple_expandable_list_item_2, mEntries) { |                 android.R.layout.simple_expandable_list_item_2, mEntries) { | ||||||
| @ -135,8 +157,14 @@ public class DeviceListActivity extends Activity { | |||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 final UsbSerialPort port = mEntries.get(position); |                 mSerialPort = mEntries.get(position); | ||||||
|                 showConsoleActivity(port); |                 UsbDevice device = mSerialPort.getDriver().getDevice(); | ||||||
|  |                 if (!mUsbManager.hasPermission(device)) { | ||||||
|  |                     PendingIntent usbPermissionIntent = PendingIntent.getBroadcast(context, 0, new Intent(INTENT_ACTION_GRANT_USB), 0); | ||||||
|  |                     mUsbManager.requestPermission(device, usbPermissionIntent); | ||||||
|  |                 } else { | ||||||
|  |                     showConsoleActivity(mSerialPort); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| @ -145,12 +173,14 @@ public class DeviceListActivity extends Activity { | |||||||
|     protected void onResume() { |     protected void onResume() { | ||||||
|         super.onResume(); |         super.onResume(); | ||||||
|         mHandler.sendEmptyMessage(MESSAGE_REFRESH); |         mHandler.sendEmptyMessage(MESSAGE_REFRESH); | ||||||
|  |         registerReceiver(mUsbReceiver, new IntentFilter(INTENT_ACTION_GRANT_USB)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     protected void onPause() { |     protected void onPause() { | ||||||
|         super.onPause(); |         super.onPause(); | ||||||
|         mHandler.removeMessages(MESSAGE_REFRESH); |         mHandler.removeMessages(MESSAGE_REFRESH); | ||||||
|  |         unregisterReceiver(mUsbReceiver); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private void refreshDeviceList() { |     private void refreshDeviceList() { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user