- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 Android 应用程序,可以在 OS v6.0/6.01 (Marshmallow) 上正常运行。当我在 OS v7.1 (Nougat) 上尝试它时,由于 WRITE_SETTINGS 要求,它崩溃了。添加添加的代码后,修改系统设置的屏幕会在 v6.0 中显示,但呈灰色。 v7.1 也会发生同样的情况,只是应用程序首先崩溃。
onCreate方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//***added code***
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.System.canWrite(getApplicationContext())) {
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getApplicationContext().getPackageName()));
startActivity(intent);
}
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_ASK_PERMISSIONS);
}
if (android.provider.Settings.System.getInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) == 1) {
android.provider.Settings.System.putInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0);
}
start = (Button) findViewById(R.id.button_start);
start.setEnabled(true);
stop = (Button) findViewById(R.id.button_stop);
stop.setEnabled(true);
confirm_ip = (Button) findViewById(R.id.button_confirm_ip);
confirm_ip.setEnabled(true);
confirm_ip.setOnClickListener(this);
grab_device = (Button) findViewById(R.id.button_device);
grab_device.setEnabled(true);
grab_device.setOnClickListener(this);
send = (Button) findViewById(R.id.button_send);
send.setEnabled(false);
send.setOnClickListener(this);
clear_loc = (Button) findViewById(R.id.button_cl);
clear_loc.setEnabled(true);
clear_loc.setOnClickListener(this);
device_name = (EditText) findViewById(R.id.et_device_name);
device_name.setEnabled(true);
location = (EditText) findViewById(R.id.et_location);
location.setEnabled(true);
scenario = (EditText) findViewById(R.id.et_scenario);
scenario.setEnabled(true);
distance = (EditText) findViewById(R.id.et_distance);
distance.setEnabled(true);
server_ip = (EditText) findViewById(R.id.et_server_ip);
server_ip.setEnabled(true);
server_ip.setText(R.string.server_ip);
mAppStatus = (TextView) findViewById(R.id.tv_app_status);
scenario_spinner = (Spinner) findViewById(R.id.spinner_scenario);
scenario_spinner.setOnItemSelectedListener(this);
ArrayAdapter<CharSequence> adp_scenario = ArrayAdapter.createFromResource(this, R.array.scenario_array,
android.R.layout.simple_spinner_item);
adp_scenario.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
scenario_spinner.setAdapter(adp_scenario);
distance_spinner = (Spinner) findViewById(R.id.spinner_distance);
distance_spinner.setOnItemSelectedListener(this);
ArrayAdapter<CharSequence> adp_distance = ArrayAdapter.createFromResource(this, R.array.distance_array,
android.R.layout.simple_spinner_item);
adp_distance.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
distance_spinner.setAdapter(adp_distance);
handler = new Handler(Looper.getMainLooper());
}
AndroidManifext.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.rssicollector">
<user-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
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>
这是 v7.1 产生的错误
08-10 09:51:19.002 31732-31732/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.rssicollector, PID: 31732
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.rssicollector/com.example.android.rssicollector.MainActivity}: java.lang.SecurityException: com.example.android.rssicollector was not granted this permission: android.permission.WRITE_SETTINGS.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.SecurityException: com.example.android.rssicollector was not granted this permission: android.permission.WRITE_SETTINGS.
at android.os.Parcel.readException(Parcel.java:1684)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.call(ContentProviderNative.java:646)
at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:1595)
at android.provider.Settings$System.putStringForUser(Settings.java:1965)
at android.provider.Settings$System.putIntForUser(Settings.java:2070)
at android.provider.Settings$System.putInt(Settings.java:2064)
at com.example.android.rssicollector.MainActivity.onCreate(MainActivity.java:132)
at android.app.Activity.performCreate(Activity.java:6682)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
关于发生了什么/如何解决它有什么想法吗?任何帮助将不胜感激!
最佳答案
if (android.provider.Settings.System.getInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) == 1) {
android.provider.Settings.System.putInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0);
}
仅当 Settings.System.canWrite(getApplicationContext())
返回 true
时才执行该代码。现在,无论 canWrite()
返回什么,您都会执行该代码。
关于java - 尽管有 WRITE_SETTINGS 权限代码,应用程序在 Android OS v7.1 中仍会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45614517/
我尝试理解[c代码 -> 汇编]代码 void node::Check( data & _data1, vector& _data2) { -> push ebp -> mov ebp,esp ->
我需要在当前表单(代码)的上下文中运行文本文件中的代码。其中一项要求是让代码创建新控件并将其添加到当前窗体。 例如,在Form1.cs中: using System.Windows.Forms; ..
我有此 C++ 代码并将其转换为 C# (.net Framework 4) 代码。有没有人给我一些关于 malloc、free 和 sprintf 方法的提示? int monate = ee; d
我的网络服务器代码有问题 #include #include #include #include #include #include #include int
给定以下 html 代码,将列表中的第三个元素(即“美丽”一词)以斜体显示的 CSS 代码是什么?当然,我可以给这个元素一个 id 或一个 class,但 html 代码必须保持不变。谢谢
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我试图制作一个宏来避免重复代码和注释。 我试过这个: #define GrowOnPage(any Page, any Component) Component.Width := Page.Surfa
我正在尝试将我的旧 C++ 代码“翻译”成头条新闻所暗示的 C# 代码。问题是我是 C# 中的新手,并不是所有的东西都像 C++ 中那样。在 C++ 中这些解决方案运行良好,但在 C# 中只是不能。我
在 Windows 10 上工作,R 语言的格式化程序似乎没有在 Visual Studio Code 中完成它的工作。我试过R support for Visual Studio Code和 R-T
我正在处理一些报告(计数),我必须获取不同参数的计数。非常简单但乏味。 一个参数的示例查询: qCountsEmployee = ( "select count(*) from %s wher
最近几天我尝试从 d00m 调试网络错误。我开始用尽想法/线索,我希望其他 SO 用户拥有可能有用的宝贵经验。我希望能够提供所有相关信息,但我个人无法控制服务器环境。 整个事情始于用户注意到我们应用程
我有一个 app.js 文件,其中包含如下 dojo amd 模式代码: require(["dojo/dom", ..], function(dom){ dom.byId('someId').i
我对“-gencode”语句中的“code=sm_X”选项有点困惑。 一个例子:NVCC 编译器选项有什么作用 -gencode arch=compute_13,code=sm_13 嵌入库中? 只有
我为我的表格使用 X-editable 框架。 但是我有一些问题。 $(document).ready(function() { $('.access').editable({
我一直在通过本教程学习 flask/python http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-wo
我想将 Vim 和 EMACS 用于 CNC、G 代码和 M 代码。 Vim 或 EMACS 是否有任何语法或模式来处理这种类型的代码? 最佳答案 一些快速搜索使我找到了 this vim 和 thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve this
这个问题在这里已经有了答案: Enabling markdown highlighting in Vim (5 个回答) 6年前关闭。 当我在 Vim 中编辑包含 Markdown 代码的 READM
我正在 Swift3 iOS 中开发视频应用程序。基本上我必须将视频 Assets 和音频与淡入淡出效果合并为一个并将其保存到 iPhone 画廊。为此,我使用以下方法: private func d
pipeline { agent any stages { stage('Build') { steps { e
我是一名优秀的程序员,十分优秀!