Filed a JIRA I think is low severity, maybe might have a clue to
workaround. But like Joe said is very low probability that the first app to
run on your new Android M is going to be a cordova app :-) before using the
camera app.

On Fri, Aug 21, 2015 at 7:54 PM Karen Tran <ktop...@gmail.com> wrote:

> I realized I goofed and that accessing the camera wasn't actually a
> permission itself. It was permission for the camera to access your
> location. So everything should be working fine for older sdk + M preview.
> The issue about not returning to the app that calls the camera after
> accepting this permission is still a bug.
>
> On Fri, Aug 21, 2015 at 1:14 AM, Joe Bowser <bows...@gmail.com> wrote:
>
> > On Thu, Aug 20, 2015 at 9:28 PM Karen Tran <ktop...@gmail.com> wrote:
> >
> > > Hi all,
> > >
> > > I've been doing some testing with Android M Preview 3 and with Android
> > API
> > > 23 to investigate the behavior I'm seeing with permissions.
> > > I tested older sdk levels with M Preview 3, API 23 with Preview 3, and
> > API
> > > 23 with Lollipop.
> > > * If anyone has different results, let me know.
> > >
> > > On master, the target sdk level is currently set to 22.
> > > Running mobilespec at this target level on the 3rd Preview, all the
> > > automatic plugin tests passes.
> > > For manual tests, there are also no regressions, however, when testing
> > the
> > > camera, I get prompted for permission.
> > >
> > >
> > This seems odd, since we're using intents to do camera, so it may be
> camera
> > asking for the camera permission? It's listed in the Android Best
> Practices
> > now, which is hilarious, since we get so much hostility for using intents
> > instead of owning our own camera.
> >
> >
> > > This is a bit odd because older sdk running on the Preview should use
> the
> > > old permission model, which is granting permission at install time, not
> > > runtime as stated in the Android documentation.
> >
> >
> > Unless Camera is using the new permission model, because it's the new
> app.
> > That said, the default Android Camera should already have permission.  I
> > think that this will literally be a one time thing.
> >
> >
> > >
> >
> > Another odd behavior is if I accept this permission for mobilespec, I
> never
> > > have to accept again, even if another app is accessing the camera.
> >
> >
> > That sounds like the intent for camera asking for the permission, not
> > MobileSpec.
> >
> >
> > > I tested
> > > this with another cordova app I made that calls the camera plugin.
> > > The last odd behavior I noticed is when you accept for camera, the
> camera
> > > app itself opens, so when you take a picture, you don't return to
> > > mobilespec. You just stay in the camera app. This only happens right
> > after
> > > accepting. When you go back to mobilespec manually and use the camera
> > > again, the expected behavior of the camera resumes and your picture
> shows
> > > up in the yellow box of mobilespec.
> > >
> > >
> > That is interesting, there's probably a bug with using intents this way,
> > and a native Android Test app should be written to demonstrate this
> > behaviour.  This is very low priority, since most people will use the
> > camera before using any other application.
> >
> >
> > > The above behaviors also happen with older sdk levels.
> > >
> > >
> > > Now manually setting the target sdk level to 23, all permissions are
> off
> > by
> > > default, I don't get prompted for any permissions either when trying to
> > run
> > > manual plugin tests. Of course having no permissions on, certain plugin
> > > tests will fail. Turning them all on manually, everything passes.
> > > Documentation of the new permission model says that we'll need to add
> > some
> > > code to check for permissions and request them.
> > >
> > >
> > That's currently as expected.  We are currently working on code to ask
> for
> > permissions, and we should be re-writing the plugins to expect the code
> to
> >
> >
> > >
> > > *On your apps that target the M Preview release or higher, make sure to
> > > check for and request permissions at runtime. To determine if your app
> > has
> > > been granted a permission, call the newcheckSelfPermission() method. To
> > > request a permission, call the new requestPermissions() method. Even if
> > > your app is not targeting the M Preview release, you should test your
> app
> > > under the new permissions model.*
> > >
> > > The cordova permissions we'll need to handle are :
> > > - contacts
> > > - location
> > > - microphone
> > > - phone
> > > - storage
> > >
> > >
> > Actually, plugin authors need to be able to handle all the permissions
> and
> > ask for them.  I have no idea what a third party plugin is going to need
> to
> > access stuff, but I do know that it's bigger than the list here.  Some
> may
> > want some access to the phone itself, and to make calls. Those are the
> > permissions our plugins need to ask for.
> >
> >
> > >
> > > Lastly testing Lollipop and older with API 23 looks fine.
> > >
> > >
> > > *TL;DR *
> > > Using M Preview with API 22 and older should be using the old
> permission
> > > model. All tests are passing except some strange behavior with the
> manual
> > > camera test which prompts for permission at runtime.
> > > Using M Preview with API 23 should use the new permission model where
> > apps
> > > should request permission at runtime. Our cordova plugins will need to
> be
> > > updated to handle this.
> > > Using Lollipop and older with API 23 should use the old permission
> > model. I
> > > didn't see any problems here.
> > >
> > >
> > If you turn a permission off manually, there's problems and we should
> have
> > code that addresses those problems.  Since we target the lowest API, we
> > will by default always have our permissions on, and so will every other
> > real world Android application given Android's poor track record of being
> > up to date, and that this month is the first month that Gingerbread, the
> > version that everyone wanted to die is finally past our arbitrary 5%
> > threshhold for support (which we disregarded because the platform go so
> > insecure and cumbersome to support, even though we put off incrementing
> the
> > minApiLevel).  We're going to supporting Samsung Galaxy S2 and S3 devices
> > for years to come, not to mention the other random Samsung Devices people
> > have that still run Android 4.1 (like my test camera).
> >
> > https://developer.android.com/about/dashboards/index.html
> >
> > You know if I had an old PhoneGap app that had the kitchen sink of
> plugins
> > installed, the first thing I'd do is turn the off one by one, because an
> > app telling me about the wonders of a park really doesn't need to have
> > access to my Contacts.  We should offer a compelling reason to upgrade,
> and
> > working on the latest version of Android when people become skeptical is
> a
> > good reason.  Unlike when people do that annoying thing where they don't
> > let apps run in the background, adding support for this should be
> expected.
> >
> > Regards,
> > > Karen
> > >
> >
>

Reply via email to