运行playstore Build Apk时,未调用Marshmallow Runtime Permissions onRequestPermissionsResult,但正常调试Apk时运行良好。谁来帮帮我。。谢谢
private void EnablePermissions()
{
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,android.Manifest.permission.RECORD_AUDIO)) {
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(this, new String[] { android.Manifest.permission.RECORD_AUDIO },
MY_PERMISSIONS_REQUEST_RECORD);
Toast.makeText(MainActivity.this, "Permission Request", Toast.LENGTH_SHORT).show();
// result of the request.
}
// Add a marker in Sydney, Australia, and move the camera.
if (ContextCompat.checkSelfPermission(MainActivity.this,
android.Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this, "checkSelfPermission ", Toast.LENGTH_SHORT).show();
return;
} else {
Log.d("Permission Denied", "Permission Failed to enable");
Toast.makeText(MainActivity.this, "Permission Failed to enable", Toast.LENGTH_SHORT).show();
}
}
OnRequestPermissionResult方法
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
try {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_RECORD: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
ChatActivity();
} else {
Toast.makeText(MainActivity.this, "Permission denied Chat ", Toast.LENGTH_SHORT).show();
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
} catch (Exception e) {
Log.e(Constants.LOG, e.getMessage());
}
}
这是正确的做法https://stackoverflow.com/a/35495372/4493133 . 我正在做下面基本相同的事情。
这是一个关于我如何让它为我的代码工作的例子
private void requestStoragePermission() {
/*
We don't have permission so prompt the user
If permission is not granted control goes to onRequestPermissionResult
*/
ActivityCompat.requestPermissions(
this,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
onRequestPermissionsResult方法:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_EXTERNAL_STORAGE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d("PERMISSION", "Storage permission granted");
} else {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
showMessageOkCancel("You need to allow access to Storage to use the offline timetables",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
requestStoragePermission();
break;
case DialogInterface.BUTTON_NEGATIVE:
Toast.makeText(MainActivity.this, "Storage permission required to continue", Toast.LENGTH_LONG)
.show();
finishAffinity();
break;
}
}
});
} else {
Toast.makeText(this, "Go to settings and enable storage permissions", Toast.LENGTH_LONG)
.show();
finishAffinity();
}
}
}
}
showMessageOkCancel方法:
private void showMessageOkCancel(String message, DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(this)
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Cancel", okListener)
.create()
.show();
}
解释:
在主代码中,您仅请求StoragePermission()。
无论是否授予权限,onRequestPermissionsResult都将运行。
如果获得许可,那就好,仅此而已。
如果未授予权限,则如果是第一次请求权限,shouldshowRequestPermissionRegulation()将返回true。然后,我会提示另一个对话框,并给出一些解释,以便用户有机会再次启用该权限。
但是,如果选中“不要再问”,则应ShowRequest estPermissionRationale将返回false。请求权限对话框将不再弹出。用户必须手动启用权限。
注意,您不必使用finishafinity()。您可以只禁用需要该权限的代码部分。
我试图实现marshmallow的权限支持,但我在“OnRequestPermissionsResult”中的代码从未被调用。代码的“onCreate”和“onMapReady”部分工作正常。检查设备是否具有权限并请求权限可以正常工作。 这是我的活动: }
我正在开发一个带有ActionBars的应用程序,它支持姜饼和其他功能。所以基本上我在使用支持库并扩展 行动B活动 对于我所有的活动。除了 onSupportNavigateUp() 方法。它只是不被调用在留档中所述。 每当用户选择从操作栏在应用程序的活动层次结构中向上导航时,就会调用此方法。 这很容易,但我一直不明白为什么它不能像预期的那样工作,谷歌也帮不上忙。这是虫子吗?还是我错过了什么?
我很难让正常工作。无论我怎么努力,我都不能让它被称为。 我的应用程序的体系结构如下所示:我的主活动包含一个片段,其中包含一个ViewPager,而ViewPager又有四个子片段实例。目前,我正在(成功地)用填充活动中的初始选项菜单,但我希望添加一些对应于每个活动子片段的额外选项。 如果有人知道这里发生了什么,我会非常感激,因为我已经被困在这个问题上两天了。 更新--我已经搞清楚了现在的问题是什么
CustomDialog 下面是http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample
我使用: null 我正在使用zuul和负载平衡rest模板从另一个微服务调用一个微服务: 请求到达下游服务,但未在ZullFilter中设置头(我使用了不同的头): 我还创建了一个过滤器: 我错过了什么?为什么不能调用筛选器?在我的案件中是否应该引用?
我试图发送一个意图,从一个活动中的创建启动一个意图服务。但是,IntentService的onHandleIntent永远不会被接收。我尝试过用意图过滤器改变清单,但似乎没有任何效果。没有抛出异常,但是根本没有调用IntentService。 这是onCreate 这是IntentService类的创建者和OnHandleContent,我知道它不会被调用,因为logcat从不显示“检索到的意图”