我想在每次 Activity 进入屏幕时请求用户的位置(我认为这里唯一的选择是 Activity 的onResume()方法),并且我想(并且应该)支持 Android 6 的新运行时权限模型。
我正在使用PermissionDispatcher库,它工作得很好。问题是正如这个问题所暗示的,如果我调用一个在方法中请求权限的函数onResume()并且用户拒绝该权限,它将陷入无限循环。
但我的问题是,由于我想获取用户在活动的每次出现时的位置,除了使用该方法之外,我想不出其他方法onResume()(因此,如果用户拒绝权限,就会陷入无限循环)。
这是我的代码示例:
@NeedsPermission(Manifest.permission.ACCESS_FINE_LOCATION)
void startLocationUpdate() {
mLocationLoadingDialog.show();
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
@OnShowRationale(Manifest.permission.ACCESS_FINE_LOCATION)
void showRationalForFineLocation(final PermissionRequest request) {
new AlertDialog.Builder(this)
.setMessage("this app needs your permission to get your location")
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
request.proceed();
}
})
.setNegativeButton("no way", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
request.cancel();
exitApp();
}
})
.setCancelable(false) …Run Code Online (Sandbox Code Playgroud) 在Android Studio中,我无法在java代码中添加READ_EXTERNL_STORAGE和WRITE_EXTERNL_STORAGE权限来检查权限,并且只能添加DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION。甚至我也在清单文件中提到了它们。请检查随附的屏幕截图。
具有 DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION 的 Java 代码
我也已经在清单文件中添加了这些权限。
任何人请帮助解决此错误,我们将不胜感激。
我想在我的java代码中添加READ_EXTERNL_STORAGE和WRITE_EXTERNL_STORAGE权限,以在android studio中使用应用程序时检查权限。请参阅随附的屏幕截图
java android android-permissions android-studio android-studio-3.0
我正在使用应用程序,我需要使用推送通知.我知道推送通知是正常的权限,所以我不能在运行时询问它.但是我会在用户下载并安装应用程序时插入权限,通知应用程序应该发送推送通知.我该怎么做?我必须在清单中插入一些东西吗?谢谢
我想编写一个应用程序来根植安装它的设备,我的意思是通过安装这个应用程序,您将能够在没有计算机的情况下根植您的设备,就像以下链接中的应用程序一样,
http://www.kingoapp.com/root-tutorials/how-to-root-android-without-computer.htm
我已经搜索了很多关于如何使用 Android 设备的 Java 代码来做到这一点,但我没有明确的解决方案。根据我的研究,我认为我们需要以下步骤:
1- 能够在 Android 中使用 shell 命令使用 Runtime.getRuntime().exec();
2-执行获得root权限的命令(我认为su,但这需要一个root设备才能执行)。
3- 启动一个 root 命令,该命令将 root 设备。
我找不到有关如何执行上述步骤的代码说明。我想先了解一下这个过程,里面可以用到的命令,然后我想尝试自己实现。由于商店中提供此功能的应用程序很多,因此实现它必须是可行的。
任何人都可以向我解释如何实施这个过程吗?
另外,是否有可能为相反的过程编写代码,即取消设备的root 权限?
任何帮助表示赞赏。
谢谢。
我正在将应用程序上载到Android PlayStore中,并且由于其中的SMS权限而被拒绝,但是在Manifest.xml文件中没有添加SMS权限。
与Google小组进行对话后,他们说短信允许使用,但我找不到。
以下是Google团队提供的屏幕截图,并且该屏幕截图具有短信权限。
我的清单文件看起来像这样
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.msonline.android">
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application
android:name=".ApplicationClass"
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/MSOAppTheme"
tools:ignore="AllowBackup,GoogleAppIndexingWarning"
tools:replace="android:allowBackup,android:icon,android:label,android:theme">
//Other declarations of Activities
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
预先感谢任何帮助。
编辑#1
build.gradle
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 28
defaultConfig {
applicationId "package name"
minSdkVersion 16
targetSdkVersion 28
versionCode 31
versionName "4.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
vectorDrawables.useSupportLibrary …Run Code Online (Sandbox Code Playgroud) android android-manifest android-permissions developer-console
RedPhone和TextSecure已迁移到Signal,但我有点担心Signal应用程序需要的所有权限.为什么信号需要ex.位置和日历?我试图搜索它,但找不到任何有关它的信息.
Signal Private Messager所需的权限:
除了"其他"权限.
任何人都可以向我解释为什么这个应用需要这么多的权限,以及不同的权限用于什么?
如何在没有"Never ask again"文本的情况下请求权限弹出窗口?
这里是java Code,
if
(intent.getAction().equals("com.finish.canceltrip.DriverMapActivity")) {
if (!checkAccessFineLocationPermission() || !checkAccessCoarseLocationPermission() || !checkWriteExternalStoragePermission()) {
requestPermission();
} else {
Intent i = new Intent(DriverMapActivity.this, DriverMapActivity.class);
i.putExtra("availability", "Yes");
finish();
startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)