我正在Android中创建一个音乐播放器应用程序.它工作正常但每当我滚动歌曲列表时它开始崩溃并给出这个例外
Process: com.example.lenovo.musicplayer, PID: 31100
java.lang.SecurityException: External path: /storage/emulated/0/Android/data/com.android.providers.media/albumthumbs/1460104607336: Neither user 10294 nor current process has android.permission.WRITE_EXTERNAL_STORAGE.
at android.os.Parcel.readException(Parcel.java:1555)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:153)
at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:691)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1170)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:994)
at android.content.ContentResolver.openInputStream(ContentResolver.java:719)
at android.provider.MediaStore$Images$Media.getBitmap(MediaStore.java:1110)
at com.example.lenovo.musicplayer.Adapter.getView(Adapter.java:119)
at android.widget.AbsListView.obtainView(AbsListView.java:2571)
at android.widget.ListView.makeAndAddView(ListView.java:1894)
at android.widget.ListView.fillDown(ListView.java:710)
at android.widget.ListView.fillGap(ListView.java:674)
at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5900)
at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:5378)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:825)
at android.view.Choreographer.doCallbacks(Choreographer.java:619)
at android.view.Choreographer.doFrame(Choreographer.java:578)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:811)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6102)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Run Code Online (Sandbox Code Playgroud)
当我在清单文件中提供写入权限时,这个问题就消失了,但是我不明白的是为什么WriteExternalStoragePermission当我没有向任何类型的存储写入任何内容时它会要求它.据我所知,音乐播放器不需要写入外部存储权限.
这是歌曲列表活动的代码
public class ActivitySongsList …Run Code Online (Sandbox Code Playgroud) android android-mediaplayer android-permissions android-securityexception
我自己无法重现此问题,但到目前为止有5位用户报告了此问题。我最近确实发布了一个应用程序更新,将目标SDK从27更改为28,我当然也参与其中。所有5位用户都在某种Pixel设备上运行某种Android 9。我也是
该应用程序通过调用设置通知并调用NotificationManager.notify()来响应警报情况。此通知引用了一个尝试播放位于外部存储器上的音频文件的通知通道。我的应用程序确实在清单中包含READ_EXTERNAL_STORAGE权限。但是由于它本身不能访问外部存储中的任何内容,因此它没有要求用户授予该权限。
当我在Pixel上执行此操作时,效果很好。但是有5位用户报告说它抛出了异常
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.anei.cadpage/net.anei.cadpage.CadPageActivity}: java.lang.SecurityException: UID 10132 does not have permission to content://media/external/audio/media/145 [user 0]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2914)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6680)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.SecurityException: UID 10132 does not have permission to content://media/external/audio/media/145 [user 0]
at android.os.Parcel.createException(Parcel.java:1950)
at android.os.Parcel.readException(Parcel.java:1918)
at android.os.Parcel.readException(Parcel.java:1868)
at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:1559)
at android.app.NotificationManager.notifyAsUser(NotificationManager.java:405)
at android.app.NotificationManager.notify(NotificationManager.java:370)
at android.app.NotificationManager.notify(NotificationManager.java:346)
at net.anei.cadpage.ManageNotification.show(ManageNotification.java:186)
at net.anei.cadpage.ReminderReceiver.scheduleNotification(ReminderReceiver.java:46)
at net.anei.cadpage.ManageNotification.show(ManageNotification.java:161)
at …Run Code Online (Sandbox Code Playgroud) notifications android android-securityexception android-9.0-pie
我是Android开发的新手,在Play商店发布之后,我面临一些设备的异常.这对我来说完全不为人知.此异常强制停止/崩溃我的应用程序.
记录完整的堆栈跟踪:
Exception java.lang.SecurityException: Missing permission to insert badges
android.os.Parcel.readException (Parcel.java:1553)
android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:185)
android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:137)
android.content.ContentProviderProxy.insert (ContentProviderProxy.java:476)
android.content.ContentResolver.insert (ContentResolver.java:1213)
android.content.AsyncQueryHandler$WorkerHandler.handleMessage (AsyncQueryHandler.java:96)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:211)
android.os.HandlerThread.run (HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)
如上所述,例外剂量不包含与我的申请相关的任何代码部分,而且我也没有找到任何满意的上述问题的解决方案.
编辑: 我正在使用外部库(SDK)进行推送通知,添加我的应用程序开始在Play商店显示11个新权限"必需权限"部分,当我要更新我的应用程序
其中一些权限是:
com.htc.launcher.permission.READ_SETTINGS
com.htc.launcher.permission.UPDATE_SHORTCUT
com.huawei.android.launcher.permission.CHANGE_BADGE
com.huawei.android.launcher.permission.READ_SETTINGS
com.huawei.launcher.permission.WRITE_SETTINGS
com.sec.android.provider.badge.permission.READ
com.sec.android.provider.badge.permission.WRITE
com.sonyericsson.home.permission.BROADCAST_BADGE
com.sonymobile.home.permission.PROVIDE_INSERT_BADGE
Run Code Online (Sandbox Code Playgroud)
我没有在我自己的清单文件中添加这些权限,因此我通过在应用程序标记中添加以下代码行来修改我的'AndroidManifest'文件:
<application
<--some code-->
tools:replace="android:icon, android:allowBackup"
>
Run Code Online (Sandbox Code Playgroud)
并使用SDK的.jar文件而不是编译它
编译'com.abc.xyz:3.+@aar'//为android studio(build.gradle)建议
应用上述过程后,这些权限将被删除,我上传我的应用程序.
只有我在我的新版应用程序中执行了这些操作.我最近也看了那个库项目,它包含一个文件夹'shortcutbadger',里面包含一些子文件夹和.class文件
是由于上述变化,我开始收到该例外?请解释/帮助!
android android-manifest android-xml android-permissions android-securityexception
以下是我通过Gmail应用发送电子邮件的方式.
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");
emailIntent.setType("text/html");
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Puzzle");
emailIntent.putExtra(Intent.EXTRA_TEXT, someTextHere));
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(attachmentFile));
try {
startActivityForResult(emailIntent, SHARE_PUZZLE_REQUEST_CODE);
} catch (ActivityNotFoundException e) {
showToast("No application found on this device to perform share action");
} catch (Exception e) {
showToast(e.getMessage());
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
它没有启动Gmail应用程序,但显示以下消息.
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.SEND typ=text/html cmp=com.google.android.gm/.ComposeActivityGmail (has extras) } from ProcessRecord{8293c64 26854:com.xxx.puzzleapp/u0a383} (pid=26854, uid=10383) not exported from uid 10083
Run Code Online (Sandbox Code Playgroud)
关于SOF的问题很少,建议大多数使用exported = true.但我无法使用此解决方案,因为我正在启动另一个应用程序的活动.你能指导我吗?
android-intent android-securityexception android-6.0-marshmallow
该应用程序正在读取通话记录.在大多数设备上都很好,其他一些设备也SecurityException适合READ_CONTACTS(我没有,也不想要我的设备)AndroidManifest.xml.
为什么这样,我能为此做点什么吗?也许,通过投影,这并不能取CACHED_NAME?
我的应用程序使用相机拍摄照片并长期使用。
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri resultUri = null;
resultUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new ContentValues());
imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, resultUri);
startActivityForResult(imageCaptureIntent, IMAGE_CAPTURE_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
但是,当我调用takePersistableUriPermission()时,将得到SecurityException:找不到持久的权限授予
我已经阅读了此“ 获取权限拒绝异常”。它非常适合ACTION_OPEN_DOCUMENT。如何获得Camera的永久许可?
java android android-camera android-permissions android-securityexception
我在 Android 11 设备上遇到以下异常,但能够在电子邮件中共享这些文件,没有任何问题。
Java:Lang:SecurityException: Permission Denial:Reading androidx.core.content.FileProvider.uri content://com.example.myapp.fileprovider/external_files_files/images/default_image.jpg from pid= 10847, uid=1000 requires the provider be exported or granUriPermission.
Run Code Online (Sandbox Code Playgroud)
仅当我共享多个文件时,Android 11 设备才会出现问题,否则当我使用 Intent.setdata = uri(singal uri object) 时,单个文件可以正常工作,没有任何问题。
我的代码:
清单文件声明:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
...>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.myapp.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
...
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
文件路径
<paths>
<external-files-path
name="images"
path="."/>
</paths>
Run Code Online (Sandbox Code Playgroud)
共享代码。
ArrayList<Uri> Urilist = new ArrayList<String>();
// Adding multiple files as below.
File imagePath = new File(Context.getExternalFilesDir(null), "images");
File newFile = new File(imagePath, "default_image.jpg");
Uri …Run Code Online (Sandbox Code Playgroud) android android-fileprovider android-securityexception android-11
美好的一天.我有一个奇怪的问题,堆栈溢出中没有任何例子工作.我正在打开一个画廊,之后我将用户重定向到crop crop.Important提到这只发生在Android N而不是设备之下.问题是,一旦作物完成就会抛出这个异常.我不知道是什么原因造成的,但实际上这就是我如何开始作物意图.
Intent cropIntent = new Intent("com.android.camera.action.CROP");
cropIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri outPutUri = FileProvider.getUriForFile(activity, activity.getApplicationContext().getPackageName() + ".provider", new File(output));
Uri photoURI = FileProvider.getUriForFile(activity, activity.getApplicationContext().getPackageName() + ".provider", new File(path));
activity.grantUriPermission("com.android.camera.action.CROP", outPutUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
activity.grantUriPermission("com.android.camera.action.CROP", photoURI, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
cropIntent.setDataAndType(photoURI, "image/*");
cropIntent.putExtra("crop", "true");
cropIntent.putExtra("aspectX", aspectX);
cropIntent.putExtra("aspectY", aspectY);
cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri);
activity.startActivityForResult(cropIntent, CROP_REQUEST);
Run Code Online (Sandbox Code Playgroud)
我已授予Uri许可,已将这些添加到清单中
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有堆栈流程回答示例,没有更多关于堆栈溢出的问题与这个场景并没有任何工作.所以android N的问题是什么?它应该这么难吗?
这是抛出的异常
FATAL EXCEPTION: main
Process: com.android.gallery3d, PID: 5735
java.lang.SecurityException: Permission Denial: writing android.support.v4.content.FileProvider uri content://my.package.name/external_files/Android/data/my.package.name/cache/0.5062300225583558.png from pid=5735, uid=10071 …Run Code Online (Sandbox Code Playgroud) android crop android-intent android-securityexception android-7.0-nougat
我正在尝试使用ActivityRecognition。但是,当我尝试获取DetectedActivity.TILTING或DetectedActivity.UNKNOWN的过渡更新时,出现错误。对于所有其他活动类型,我都没有问题。
这是我创建ActivityTransitionRequest的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, ActivityRecognizedService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
Task<Void> task =
ActivityRecognition.getClient(this).
requestActivityTransitionUpdates(createTransitionsRequest(), pendingIntent);
task.addOnSuccessListener(
new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void result) {
Log.d(TAG, "success");
// Handle success
}
}
);
task.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.d(TAG, "failure", e);
// Handle error
}
}
);
// ActivityRecognition.getClient(this).requestActivityUpdates(1000L, pendingIntent);
}
private ActivityTransitionRequest createTransitionsRequest() {
List<ActivityTransition> transitions = new ArrayList<>();
transitions.add( …Run Code Online (Sandbox Code Playgroud) android google-api android-pendingintent activity-recognition android-securityexception
每次我尝试启动我的应用程序时,它都会立即崩溃,因为它收到此错误。
这是我的清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.simpleweatherandroid"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
<uses-permission android:name="INTERNET"/>
<uses-permission android:name="ACCESS_NETWORK_STATE"/>
<application
android:exported = "true"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.simpleweatherandroid.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
我绝对获得了那里的许可,并且我已经用完了我可以在互联网上找到/找到的解决方案。我无法弄清楚这一点。有谁知道出了什么问题吗?我对此很陌生,所以这可能是一些基本的东西。