title: Remove USB Accessory permission dialog
body: <p>I am working on an application which uses USB accessory.When I attach device to arduino it asks for usb permission and it has checkbox in dialog "use by default".When I checked and press ok then it should save permission and do not ask me again but it is asking for permission every time I attach USB.I want to save permission is there any way to save this? </p>
  
  <p>My Code loooks like</p>
  
  <pre><code>@Override
  public void onResume() {
      super.onResume();
  
      if (mInputStream != null &amp;&amp; mOutputStream != null) {
          // streams were not null");
          return;
      }
      // streams were null");
      UsbAccessory[] accessories = mUsbManager.getAccessoryList();
      UsbAccessory accessory = (accessories == null ? null : accessories[0]);
      if (accessory != null) {
          if (mUsbManager.hasPermission(accessory)) {
              openAccessory(accessory);
          } else {
              synchronized (mUsbReceiver) {
                  if (!mPermissionRequestPending) {
                      mUsbManager.requestPermission(accessory,
                              mPermissionIntent);
                      mPermissionRequestPending = true;
                  }
              }
          }
      }
  </code></pre>
  
  <p>And Android manifest file looks </p>
  
  <pre><code> &lt;activity
          android:name="pkg.sarvajal.soochakdroid.Main"
          android:label="@string/Home" 
          android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
          android:screenOrientation="landscape"&gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" /&gt;
               &lt;action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /&gt;
          &lt;/intent-filter&gt;
  
  
          &lt;meta-data
              android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
              android:resource="@xml/accessory_filter" /&gt;
      &lt;/activity&gt;
  </code></pre>
  
  <p>Accessory filter is like</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;resources&gt;
  &lt;usb-accessory manufacturer="Manufacturer" model="Model" version="1.0" /&gt;
  &lt;usb-device vendor-id="0x0403" product-id="0x0403" /&gt;
  &lt;/resources&gt;
  </code></pre>
  
  <p>My BroadcastReceiver code</p>
  
  <pre><code>private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
          String action = intent.getAction();
          if (ACTION_USB_PERMISSION.equals(action)) {
              synchronized (this) {
                  //UsbAccessory accessory = UsbManager.getAccessory(intent);
                  UsbAccessory accessory = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
                  if (intent.getBooleanExtra(
                          UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
                      Flag_USB_Attached = true;
                      Flag_Count_USB_Attached = 0;
                      Flag_Count_USB_Restart_App = 0;
                      openAccessory(accessory);
                      String strdatetime =responce_date();
                      //sendSMS_background(phoneNumber, "USB Cable Connected  at "+strdatetime);
  
  
                  } else {
                      // USB permission denied
                  }
              }
          } else if (UsbManager.ACTION_USB_ACCESSORY_DETACHED.equals(action)) {
              //UsbAccessory accessory = UsbManager.getAccessory(intent);
              UsbAccessory accessory = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
              if (accessory != null &amp;&amp; accessory.equals(mAccessory)) {
                  // accessory detached
                  Flag_USB_Attached = false;
                  Flag_Count_USB_Attached = 0;
                  closeAccessory();
                  String strdatetime =responce_date();
                  //sendSMS_background(phoneNumber, "Communication Stopped! \n USB Cable Disconnected  at "+strdatetime);
                  //SMS_USB();
  
              }
          }
  }
  </code></pre>
  
  <p>And Settingup accessory code</p>
  
  <pre><code>/ Setting up accessory
  private void setupAccessory() {
      //mUsbManager = UsbManager.getInstance(this);
      mUsbManager  = (UsbManager) getSystemService(Context.USB_SERVICE);
      mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(
              ACTION_USB_PERMISSION), 0);
      IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
      filter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED);
      registerReceiver(mUsbReceiver, filter);
      if (getLastNonConfigurationInstance() != null) {
          mAccessory = (UsbAccessory) getLastNonConfigurationInstance();
          openAccessory(mAccessory);
      }
  }
  // Opening Accessory Mode
  private void openAccessory(UsbAccessory accessory) {
      mFileDescriptor = mUsbManager.openAccessory(accessory);
      if (mFileDescriptor != null) {
          mAccessory = accessory;
          FileDescriptor fd = mFileDescriptor.getFileDescriptor();
          mInputStream = new FileInputStream(fd);
          mOutputStream = new FileOutputStream(fd);
          Thread thread = new Thread(null, this, "OpenAccessoryTest");
          thread.start();
          // Accessory opened
      } else {
          // failed to open accessory
      }
  }
  // close Accessory
  private void closeAccessory() {
      try {
          // T.cancel();
          if (mFileDescriptor != null) {
              mFileDescriptor.close();
          }
      } catch (IOException e) {
      } finally {
          mFileDescriptor = null;
          mAccessory = null;
      }
  }
  </code></pre>