Java 在我的应用中检查写入\u安全\u设置权限时出现问题

Java 在我的应用中检查写入\u安全\u设置权限时出现问题,java,android,Java,Android,我对Android和Javascript相当陌生。但是,我通过观看教程和提问来积极学习。现在,我正在尝试编写一个可以更改某些系统值的应用程序。我知道这只能通过授予我的应用“写入安全设置”权限来实现。通过我的研究,我意识到我不能在清单文件中声明权限。显然,唯一值得尊敬的答案是检查用户是否通过ADB授予了权限。我找不到任何与这个话题相关的东西,我希望你们能帮助我得出一个结论,如何正确地做到这一点。到目前为止,这是我的代码 package com.datastream.settingschanger;

我对Android和Javascript相当陌生。但是,我通过观看教程和提问来积极学习。现在,我正在尝试编写一个可以更改某些系统值的应用程序。我知道这只能通过授予我的应用“写入安全设置”权限来实现。通过我的研究,我意识到我不能在清单文件中声明权限。显然,唯一值得尊敬的答案是检查用户是否通过ADB授予了权限。我找不到任何与这个话题相关的东西,我希望你们能帮助我得出一个结论,如何正确地做到这一点。到目前为止,这是我的代码

package com.datastream.settingschanger;

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);

    String requiredPermission = "android.permission.WRITE_SECURE_SETTINGS";
    int checkVal = getContext().checkCallingOrSelfPermission(requiredPermission);
    if (checkVal == PackageManager.PERMISSION_GRANTED) {
    }
    Toast.makeText(getActivity(), "WRITE_SECURE_SETTINGS has been granted to the application. You may now continue!",
            Toast.LENGTH_LONG).show();

    if (checkVal == PackageManager.PERMISSION_DENIED) {
    }
    Toast.makeText(getActivity(), "WRITE_SECURE_SETTINGS has not been granted to the application. Please grant access to continue.",
            Toast.LENGTH_LONG).show();
}
}
但是,当我在Android Studio中运行此程序时,会出现以下错误:

error: cannot find symbol method getContext()
error: cannot find symbol method getActivity()
error: cannot find symbol method getActivity()
有人能帮我解决这些错误吗?我不知道如何解决这个问题。谢谢大家!

getContext()
getActivity()
方法用于
片段
以获取
上下文

删除
getContext()
getActivity()
并使用
主活动。此
可在活动中获取
上下文

用这个

int checkVal = checkCallingOrSelfPermission(requiredPermission);
而不是这个

int checkVal = getContext().checkCallingOrSelfPermission(requiredPermission);
示例代码

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String requiredPermission = "android.permission.WRITE_SECURE_SETTINGS";
    int checkVal = checkCallingOrSelfPermission(requiredPermission);
    if (checkVal == PackageManager.PERMISSION_GRANTED) {
    }
    Toast.makeText(this, "WRITE_SECURE_SETTINGS has been granted to the application. You may now continue!",
            Toast.LENGTH_LONG).show();

    if (checkVal == PackageManager.PERMISSION_DENIED) {
    }
    Toast.makeText(this, "WRITE_SECURE_SETTINGS has not been granted to the application. Please grant access to continue.",
            Toast.LENGTH_LONG).show();
}
}

非常感谢您的快速响应和帮助!这似乎成功了!但是,我注意到,在应用程序启动时,toast消息都会显示出来。在我看来,在代码中,在检查权限之后,似乎只应该显示一个toast。你知道为什么会这样吗?@DataStream3检查一下,谢谢你的链接Nilesh!代码现在运行得很好,我要感谢你!非常感谢你!对不起,再次打扰你。你能再帮我一件事吗?您知道如何更改Android设置数据库全局表中字符串的值吗?