我正确地允许和拒绝权限,应用程序第一次运行正常,但是当授予所有权限时,下次用户启动应用程序时,它只显示启动屏幕并变得稳定,不会移动到下一个活动,而且它也不会给出任何错误,我正在尝试的是下面的。
private static final int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
splashIcon = (ImageView) findViewById(R.id.splashIcon);
new Thread(new Runnable()
{
@Override
public void run()
{
Animation anim1 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.bounce);
splashIcon.setAnimation(anim1);
anim1.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
checkMultiplePermissions();
}else{
startActivity(new Intent(Splash.this,UserGuideActivity.class));
finish();
}
}
@Override
public void onAnimationRepeat(Animation animation)
{
}
});
}
}).start();
}
private void checkMultiplePermissions() {
if (Build.VERSION.SDK_INT >= 23) …Run Code Online (Sandbox Code Playgroud) 我试图通过在 AndroidManifest.xml 中声明来从 GPS 或使用这些权限的网络提供商获取当前位置,
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)
我在运行时验证权限,
ActivityCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
Run Code Online (Sandbox Code Playgroud)
和
ActivityCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
Run Code Online (Sandbox Code Playgroud)
对于 Android SDK 版本 22,它工作得很好,而在 SDK 版本 25 中,尽管在 AndroidManifest.xml 中声明了权限,但它在运行时并未得到反映。
我检查了这些权限是否被授予,
adb shell dumpsys 包 com.abc.xyz
当我尝试使用 adb shell 授予权限时,在 SDK-25 上运行的应用程序未授予权限,如下所示:
adb shell pm grant com.abc.xyz android.Manifest.permission.ACCESS_COARSE_LOCATION
我怀疑 Android 从 SDK 版本 25 开始授予这些权限(如果我错了,请纠正我)。仅通过谷歌搜索,我无法弄清楚 SDK 版本之间的权限级别/严重性如何变化。
请帮我了解一下。
android android-manifest android-location android-permissions
我在这里发帖之前搜索过类似的问题,但没有找到解决我问题的答案。我的 manifest.xml 文件似乎是正确的,我希望用户被要求获得安装权限(不是运行时,它已经可以与我的代码一起使用)。我不知道为什么我放的参数不起作用:
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:name="VILES" android:versionCode="1" android:versionName="0.0.1" package="fr.nc.delegue.referendum" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:usesCleartextTraffic="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
</manifest>
Run Code Online (Sandbox Code Playgroud)
我使用 Cordova(和 Quasar)来构建我的应用程序,该应用程序运行良好,但我仍然遇到安装时没有请求权限的问题......任何人都可以告诉我我在这里做错了什么吗?提前致谢 :)
通过向 config.xml 添加 MODIFY_AUDIO_SETTINGS 权限,我的应用程序将在运行后崩溃。
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/uses-permission" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
</edit-config>
Run Code Online (Sandbox Code Playgroud)
然后运行应用程序:
ionic cordova run android -- device
Run Code Online (Sandbox Code Playgroud)
我也尝试获取 ionic android 权限
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
result =>console.log('Haspermission?',result.hasPermission),
err =>this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA)
);
Run Code Online (Sandbox Code Playgroud)
但没有弹出窗口询问用户许可。最后我直接使用了cordova权限
ionic cordova plugin add cordova-plugin-android-permissions
declare var cordova:any
var permissions = cordova.plugins.permissions;
permissions.requestPermission(permissions.RECORD_AUDIO, successCallback, errorCallback);
Run Code Online (Sandbox Code Playgroud)
我可以获得相机或 record_audio 的许可,但 requestPermission 对于 MODIDY_AUDIO_SETTINGS 许可返回 false。
permissions.requestPermission(permission.MODIDY_AUDIO_SETTINGS, success, error);
function error() {
resolve(false);
}
function success(status) {
if (status.hasPermission) { // <-- status.hasPermission is false here …Run Code Online (Sandbox Code Playgroud) webrtc cordova android-permissions getusermedia ionic-framework
好吧,我已经构建了一个应用程序来在远程数据库上存储值。有用!!我没有使用模拟器进行测试,而是使用自己的手机。现在的问题是,在我的手机上,它运行良好……没有问题,但是当我将它安装在另一部手机上时,该应用程序无法连接到互联网。我在 android manifest.xml 中包含了互联网权限。
我试过这些,但没有奏效:
*我为 try...catch 块添加了错误消息,以敬酒的形式让用户知道问题所在。和没有互联网返回连接问题的捕获异常。我收到了那个错误信息。
通过研究,我了解到 Internet 权限被归类为正常权限,在安装时不会提示用户。
我构建了第二个虚拟应用程序:同样的问题......直接编译到新手机但没有用......它在旧手机上工作......
旧手机:搭载 Android 8.1 的三星 J7 Prime 新手机:搭载 Android 9 的三星 J7 Pro
任何想法或建议都会很高兴有帮助...谢谢!
如何检查Manifest.permission.MANAGE_EXTERNAL_STORAGE权限是否被授予?我已经尝试了以下但它不起作用:
ContextCompat.checkSelfPermission(context,
"Manifest.permission.MANAGE_EXTERNAL_STORAGE")
== PackageManager.PERMISSION_GRANTED
Run Code Online (Sandbox Code Playgroud)
尽管已授予权限,但上述代码始终返回 false。任何帮助表示赞赏,谢谢!
这是我通过 USB 运行的命令
adb -s pm disable-user com.instagram.android
Run Code Online (Sandbox Code Playgroud)
错误:java.lang.SecurityException:权限拒绝:尝试从 pid=21028、uid=2000、包 uid=10134 更改组件状态
我也尝试过 --user 2000或--user 0没有--user 13任何运气
adb shell pm list users
用户:UserInfo{0:Owner:13} 正在运行
adb -s pm disable-user --user 13 com.instagram.android
Run Code Online (Sandbox Code Playgroud)
以上是在小米红米2 Prime上的android 5.1上进行的。
而相同的代码在摩托罗拉 Moto C 上的 android 7.0上运行时 效果非常好。两款都是全新的免root手机。有什么不同 ?我是否缺少任何权限设置?
违反请求安装包权限:权限使用与应用程序的核心用途没有直接关系。
我们发现您的应用不符合REQUEST_INSTALL_PACKAGES允许使用权限的方式。具体来说,权限的使用与应用程序的核心用途没有直接关系。
之前推荐的答案
离子电容器删除 Android 构建的 REQUEST_INSTALL_PACKAGES 权限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" tools:node="remove"/>
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest.xml中
或者从 Android Manifest.xml Merged Manifest Tab 中删除,该选项卡没有引用
android.permission.REQUEST_INSTALL_PACKAGES。
我使用的唯一 Cordova 插件是 localforage-cordovasqlitedriver
电容器插件列表,
如何有效地搜索插件和项目以查找正在添加的插件和项目android.permission.REQUEST_INSTALL_PACKAGES。
我还发现
公共静态最终字符串REQUEST_INSTALL_PACKAGES =“android.permission.REQUEST_INSTALL_PACKAGES”;
在~/Library/Android/sdk/platforms/android-32/android.jar!/android/Manifest.class
android cordova android-permissions ionic-framework capacitor
是否有人因 REQUEST_INSTALL_PACKAGES 权限而被 Google Play 拒绝?

我从我的应用程序中删除了此权限,甚至删除了使用它的插件,但仍然遭到拒绝。我检查了所有android清单文件,甚至所有日志都没有REQUEST_INSTALL_PACKAGES权限
android android-manifest google-play android-permissions flutter
我想获得READ_EXTERNAL_STORAGE权限.这是我的代码
// Check if user granted the permission
int hasReadExternalStoragePermission = ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE);
if(hasReadExternalStoragePermission == PackageManager.PERMISSION_GRANTED) {
displaySongs();
} else {
// Should we show explanation?
if( ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.READ_EXTERNAL_STORAGE)) {
// Show explanation to user
} else {
// No explanation needed. We can request permissions
String permissions[] = {
Manifest.permission.READ_EXTERNAL_STORAGE
};
ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSIONS_CODE);
}
}
Run Code Online (Sandbox Code Playgroud)
这是回叫方法
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_PERMISSIONS_CODE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted …Run Code Online (Sandbox Code Playgroud) android ×9
cordova ×3
adb ×1
android-10.0 ×1
capacitor ×1
flutter ×1
getusermedia ×1
google-play ×1
java ×1
permissions ×1
root ×1
webrtc ×1
xml ×1