我使用以下代码在我的应用程序中请求精确位置权限,但是当它运行时,请求对话框会在应用程序后面打开,因此用户在应用程序关闭之前不会看到它。
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
如何在应用程序前打开对话框,还有一种方法让我的应用程序知道用户何时回答了请求(无论是接受还是拒绝 - 我不一定需要知道其中)?
活动的完整代码:
package com.myApp;
import android.Manifest;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class permissionsCheckAndSet extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_permissions_check_and_set);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
}
public void clickRequestPermissions(View v) {
Toast.makeText(this, "Request permissions now", Toast.LENGTH_LONG).show();
doRequestPermissions();
}
public void doRequestPermissions() {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}
}
解释完整的用户流程......
首先显示启动画面。此屏幕检查各种事物 - 网络可用,互联网可用,在线数据库可用。此启动屏幕还会检查是否已为应用程序授予所需(不是必需但是需要)的权限。在进行这些检查时,会向用户提供视觉反馈,以便他们可以看到正在发生的事情。
如果一切正常,则会打开主应用程序活动屏幕。
如果权限检查确定尚未授予其中一个或多个所需权限,则会打开上面显示的活动。
此活动的屏幕告知用户尚未授予某些权限。它继续解释每个权限需要什么。最后,它解释了单击屏幕底部的按钮将提示他们允许或拒绝该应用所需的每个权限。
clickRequestPermissions
是附加到权限信息屏幕底部按钮的功能。
我假设我不需要发布与活动布局相关的所有XML,但它是android:theme="@style/AppTheme.NoActionBar"
活动。
答案 0 :(得分:0)
您可以先创建SplashScreenActivity检查权限,稍后的接收结果可以启动您的活动。