Return-Path: X-Original-To: apmail-cordova-dev-archive@www.apache.org Delivered-To: apmail-cordova-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C748918A6A for ; Fri, 27 Nov 2015 22:51:56 +0000 (UTC) Received: (qmail 75780 invoked by uid 500); 27 Nov 2015 22:51:56 -0000 Delivered-To: apmail-cordova-dev-archive@cordova.apache.org Received: (qmail 75739 invoked by uid 500); 27 Nov 2015 22:51:56 -0000 Mailing-List: contact dev-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list dev@cordova.apache.org Received: (qmail 75727 invoked by uid 99); 27 Nov 2015 22:51:56 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Nov 2015 22:51:56 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id CC7FE1A2559 for ; Fri, 27 Nov 2015 22:51:55 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.879 X-Spam-Level: ** X-Spam-Status: No, score=2.879 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-us-east.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id l-uobSuvI8uP for ; Fri, 27 Nov 2015 22:51:55 +0000 (UTC) Received: from mail-ig0-f177.google.com (mail-ig0-f177.google.com [209.85.213.177]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with ESMTPS id ACA20428E2 for ; Fri, 27 Nov 2015 22:51:54 +0000 (UTC) Received: by igbxm8 with SMTP id xm8so38089397igb.1 for ; Fri, 27 Nov 2015 14:51:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=G2yatjlEoPF5cN0QQNfdluXn0nLNUPnIiD5+jcYvKFY=; b=hu4PMeC6JLgS01nHN5QPfjvzuWJovuksuw9qGwOwJnM/uDEVVy8gx8DvI4BZ5p85JB PY3ObJ//PrORP5fuNcMpT3cTIkBm7pScap/h9v6Mg4PTwSw2DvQfVmqHsa4GDa7axV1r x5G/9RIZnlGoFHMk/OvoJoiuejMAlwWsQN+XdRHJMZNS+pYDP600GarJ0BwEkzGumdb4 iP2krbVUExvHs99Af8aE5dj6oby5E47Rgu9B9ADnSIgqfKT8P0hg+5mgyMYGgkxtUdur UXFTPL/hGMekF6aeRvOMtOkUNdIX83T3EevDxBNcBYr8/+53NXw55kxO+oFCEVaYqXEj YneA== MIME-Version: 1.0 X-Received: by 10.50.79.230 with SMTP id m6mr10454481igx.6.1448664714338; Fri, 27 Nov 2015 14:51:54 -0800 (PST) Received: by 10.64.25.98 with HTTP; Fri, 27 Nov 2015 14:51:54 -0800 (PST) Date: Fri, 27 Nov 2015 14:51:54 -0800 Message-ID: Subject: [Android] Oops...we screwed up in Cordova-Android 5.0.x From: Joe Bowser To: dev Content-Type: multipart/alternative; boundary=089e01229aaab2693205258d890f --089e01229aaab2693205258d890f Content-Type: text/plain; charset=UTF-8 Hey So, I just came back from Android Dev Summit, and it turns out that we didn't figure out how to use the method shouldShowRequestPermissionRationale(). Here's the use case that we didn't figure out: If a user refuses a permission twice, they have the option of not showing the permission prompt ever again. Basically, this is bad, and the user should probably use the first callback to explain why this is an issue. That said, if the user requests the permission a second time, Android Best Practices state that we should call shouldShowRequestPermissionRationale() and check to see if it was refused the first time, explain that the permission requires this permission, and then prompt. Right now, we can't do that easily without adding an additional API call on the CordovaInterface. I think that any changes to CordovaInterface should automatically prompt a major version update, so I don't want to do this. So, what should we do with this call? Ignore it? Call it inside the plugin, and have each plugin handle this independently? I think that we should have probably caught this when we were wishing we could explain why we were requesting certain permissions on our plugins, but hindsight is always 20/20. So, thoughts on what we should do about this? Make do without it? Joe --089e01229aaab2693205258d890f--