我对Android Studio和Android编程都很陌生。我刚刚读了关于第一个common Intent教程的内容,它是关于AlarmClock
。我试着编写一个简单的代码来测试这个意图,但是抛出的SecurityException
无效,堆栈跟踪如下所示:
05-20 15:36:25.010 2342-2342/com。维法隆。helloandroid E/AndroidRuntime:致命异常:主进程:com。维法隆。helloandroid,PID:2342 java。lang.RuntimeException:无法启动活动组件信息{com.viphalong.helloandroid/com.viphalong.helloandroid.MainActivity}:java。lang.SecurityException:权限拒绝:从ProcessRecord{ad271560 2342:com.viphalong.helloandroid/u0a52}(pid=2342,uid=10052)启动Intent{act=android.Intent.action.SET_ALARM cmp=com.android.deskclock/.handleappicalls(有额外功能)}需要com.Android惊恐准许在Android上设置警报。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:2184)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2233)。应用程序。活动线程。在Android上获得800美元(ActivityThread.java:135)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1196)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:102)。操作系统。活套。android上的loop(Looper.java:136)。应用程序。活动线程。java上的main(ActivityThread.java:5001)。朗,反思一下。方法java上的Invokenactive(本机方法)。朗,反思一下。方法在com上调用(Method.java:515)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:785)。Android内部的操作系统。合子体。dalvik的main(ZygoteInit.java:601)。系统原生艺术。主要(本机方法)由以下原因引起:java。lang.SecurityException:权限拒绝:从ProcessRecord{ad271560 2342:com.viphalong.helloandroid/u0a52}(pid=2342,uid=10052)启动Intent{act=android.Intent.action.SET_ALARM cmp=com.android.deskclock/.handleappicalls(有额外功能)}需要com.Android惊恐准许在Android上设置警报。操作系统。包裹android上的readException(Parcel.java:1465)。操作系统。包裹android上的readException(Parcel.java:1419)。应用程序。活动管理器氧气。android上的startActivity(ActivityManagerActive.java:2096)。应用程序。仪器。android上的execStartActivity(Instrumentation.java:1419)。应用程序。活动android上的startActivityForResult(Activity.java:3424)。应用程序。活动android上的startActivityForResult(Activity.java:3385)。支持v4。应用程序。碎片活动。android上的startActivityForResult(FragmentActivity.java:842)。应用程序。活动android上的startActivity(Activity.java:3627)。应用程序。活动startActivity(Activity.java:3595)位于com。维法隆。helloandroid。主要活动。com上的createAlarm(MainActivity.java:22)。维法隆。helloandroid。主要活动。android上的onCreate(MainActivity.java:14)。应用程序。活动android上的performCreate(Activity.java:5231)。应用程序。仪器。android上的callActivityOnCreate(Instrumentation.java:1087)。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:2148)。应用程序。活动线程。handleLaunchActivity(ActivityThread.java:2233)
以下是清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.viphalong.helloandroid">
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这里是主要代码:
package com.viphalong.helloandroid;
import android.content.Intent;
import android.provider.AlarmClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//try creating a simple alarming
createAlarm("Welldone", 0, 1);
}
void createAlarm(String msg, int hours, int minutes){
Intent it = new Intent(AlarmClock.ACTION_SET_ALARM);
it.putExtra(AlarmClock.EXTRA_MESSAGE, msg)
.putExtra(AlarmClock.EXTRA_HOUR, hours)
.putExtra(AlarmClock.EXTRA_MINUTES, minutes);
if(it.resolveActivity(getPackageManager()) != null){
startActivity(it);
}
}
}
如你所见,我把线
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
在清单文件中。但是异常仍然被抛出,这让我非常困惑。
如果您使用的是AndroidM,则需要检查运行时权限,因为AndroidM可以删除权限。
什么是Android版本,你试图实现它。我以前在Android6.0上测试时也遇到过类似的问题。我不得不手动转到应用程序权限,并打开相同的权限。
或者,您可以检查下面的链接。https://developer.android.com/training/permissions/requesting.html
这将帮助您检查用户是否已授予应用的权限。
希望这对你有帮助。祝您有个美好的一天!!
尝试添加两个权限...
我也遇到过类似的问题。。。通过添加两个权限来解决。。
编辑:此处不允许的消息不再显示。 我正在使用Volley访问google books,api是IcecreamSandwich。即使包括对清单文件的权限,我仍然会得到关于权限的异常。我已经读了一些已回答的问题(这个,这个)。当光标指向时,表示此处不允许使用该标记。我该如何解决问题呢? logcat:
我有一个针对SDK28的Android应用程序,所以我有处理的权限。我检查是否设置了,但当Exoplayer尝试读取文件(我验证该文件确实存在)时,我看到 com.google.android.exoplayer2.upstream.filedatasource$filedatasourceException:java.io.fileNotfoundexception:/storage/emula
我分配一个角色权限来创建数据库。相同的角色被分配给登录用户,但是当我试图使用分配角色的登录用户创建新数据库时,我得到权限拒绝错误。 无法执行语句。权限拒绝,数据库主,所有者dbo。运行此命令需要以下权限:CREATE DATABASE。赛贝斯错误代码=10331严重级别=14,状态=3,事务状态=0第1行 我用15.5分和16分试了一下。我做错什么了吗?我们需要考虑其他参数吗?我经历了这次讨论 h
我的清单里有这个: 这是我尝试创建和写入文件的地方(它在一个名为的文件中): 当我尝试创建文件时,会显示以下内容: 如您所见,它在此处打印,表示授予了权限,但紧接着出现了“权限被拒绝”错误。有没有办法解决这个问题? 编辑:在旁注上,当它说它试图保存到数据/用户/0/cs时。cscb07courseproject/files,是在项目中还是保存在我的计算机上?因为当我去我的终端做cd/data或cd
我面临一个关于Android应用程序新版本发布的问题。 场景: 我在2个月前(2020年12月)将初始flutter android应用程序上传到google play商店,即使在代码中没有使用,我们也意外添加了位置权限。(只是在Android清单中添加了权限)。 现在我们提出了新版本的flutter android应用程序并尝试创建新的Release版本1.0.2,它在提交新版本的应用程序时显示