小编Jyo*_*ngh的帖子

Android Studio - 删除安全异常警告

我正在通过用户的位置

Location location = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
Run Code Online (Sandbox Code Playgroud)

这行代码在方法内部,在调用此方法之前,我会检查Android运行时权限.只有当用户可以获得权限时,我才会调用此方法.代码工作得很好.

问题是Android Studio仍然在此行上显示错误,而不是在调用此函数之前已经检查过我已经检查过.

Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`
Run Code Online (Sandbox Code Playgroud)

现在我该如何删除此警告?我已经检查了权限,并且不想再次检查只是为了删除此警告.我已经尝试添加@SuppressWarnings(),但不知道要传递给它的确切字符串. @SuppressWarnings({"all"})有效,但显然不推荐.

如何删除此警告?

编辑1:这是我的确切代码 -

private void checkPermissions() {
    if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_GRANTED)
        getLocation();  //Method called if I have permission
}

private void getLocation() {
    //Android studio shows warning at this line.
    Location location = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
}
Run Code Online (Sandbox Code Playgroud)

但是如果我将权限检查放在getLocation()方法中,那么警告就会消失.@SuppressWarnings({"MissingPermission"})无效. …

android suppress-warnings android-studio runtime-permissions

53
推荐指数
2
解决办法
2万
查看次数

Intellij Idea警告 - 使用aysnc/await忽略"返回的Promise"

我在我的代码中使用Express.jsNode.js v7.3.在这里我创建了一个User Router将请求转发给我的User Controller.

我在User Controller异步调用中使用async/await .问题是IntelliJ给了我一个警告说

从login()返回的Promise将被忽略.

问题是我甚至没有从login()方法中返回任何东西.

这是代码 -

UserRouter.js

router.post('/login', function (req, res, next) {
    userController.login(req, res); // I get the warning here
});
Run Code Online (Sandbox Code Playgroud)

UserController.js

exports.login = async function (req, res) {
    try {
        const verifiedUser = await someFunction(req.body.access_code);
        let user = await User.findOrCreateUser(verifiedUser);
        res.status(200).send(user);
    }
    catch (err) {
        res.status(400).send({success: false, error: err});
    }
};
Run Code Online (Sandbox Code Playgroud)

如果我只使用本机承诺编写相同的登录方法,那么我不会收到此警告.我在这里理解错误或者IntelliJ有错吗?

编辑 -

感谢@Stephen,我知道async函数会返回一个promise,但如果Intellij发现没有从async函数返回任何内容并且没有显示该警告,那就不会更好了,因为当我.then()login()函数之后链接a时,它undefined在then结果中提供一个对象.这意味着如果我们不显式地从异步函数返回一些东西,那么返回undefined?

javascript intellij-idea node.js async-await es6-promise

46
推荐指数
7
解决办法
3万
查看次数

向imageview添加渐变

我想在图像的底部添加渐变.像这样的东西:

在此输入图像描述

我试过这样的东西,但我只得到渐变没有图像..

    <ImageView
    android:id="@+id/trendingImageView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/trend_donald_sterling"
    android:src="@drawable/trending_gradient_shape"
  />
Run Code Online (Sandbox Code Playgroud)

trending_gradient_shape:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle" >

    <gradient
        android:angle="90"
        android:endColor="@android:color/darker_gray"
        android:startColor="@android:color/darker_gray" />

    <corners android:radius="0dp" />

</shape>
Run Code Online (Sandbox Code Playgroud)

android android-imageview android-drawable

42
推荐指数
5
解决办法
4万
查看次数

从首选项XML文件启动位置设置意图

我想从一个启动系统的位置设置Intent.我以编程方式知道它是这样的

Intent viewIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(viewIntent);
Run Code Online (Sandbox Code Playgroud)

但我需要从一个XML的XML中做到这一点Preference.我试着这样

<Preference
    android:title="@string/pref_title" >
    <intent android:action="android.settings.ACTION_LOCATION_SOURCE_SETTINGS" />
</Preference>
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我总是得到一个ActivityNotFoundException.如何从XML Intent启动系统位置设置?

android android-preferences android-intent

18
推荐指数
1
解决办法
2万
查看次数

MongoDB恢复警告

我正在按照教程来备份和恢复单个MongoDB数据库.

备份命令 -

sudo mongodump --db newdb --out /var/backups/mongobackups/`date +"%m-%d-%y"`
Run Code Online (Sandbox Code Playgroud)

恢复命令 -

sudo mongorestore --db newdb --drop /var/backups/mongobackups/01-20-16/newdb/
Run Code Online (Sandbox Code Playgroud)

虽然它完美无缺,但MongoDB在恢复数据时给了我这个警告 -

只应在从BSON文件恢复时使用--db和--collection args.其他用途已弃用,将来不再存在; 请改用--nsInclude

有人可以解释如何删除此警告吗?

我正在使用MongoDB 3.4.1版本.

database-backups mongodb mongorestore mongodump

14
推荐指数
1
解决办法
8942
查看次数

所有测试运行后,Jest清理干净

在Jest中是否可以运行在所有其他测试完成后运行的清理或拆卸任务?类似于setupFiles允许在任何测试运行之前设置任务的方式.无论测试是否有任何错误,如果这也可以运行,则可以获得奖励积分.

放置afterAll(() => {})在文件的顶层(在任何描述函数之外)仅在该特定文件的测试完成后运行.

用例是我有很多测试文件可以在开发数据库中创建用户,我不想让每个测试文件负责清理和删除用户.编写测试时也会发生错误,因此如果发生清理而不考虑哪种错误更可取.

unit-testing node.js jasmine reactjs jestjs

12
推荐指数
3
解决办法
1万
查看次数

启动Emulator AVD Android Studio时出错

启动模拟器时,我收到此警告.

emulator: WARNING: Host CPU is missing the following feature(s) required for x86 emulation: SSSE3
Hardware-accelerated emulation may not work properly!
Run Code Online (Sandbox Code Playgroud)

发生的情况是模拟器弹出,但手机的屏幕保持黑色.我等了半个小时,但它只是保持黑色.

我已经从BIOS中启用了虚拟化.我在Ubuntu 14.04上,我的CPU处理器是AMD.

android android-virtual-device android-studio

10
推荐指数
1
解决办法
7178
查看次数

Node.js UnhandledPromiseRejectionWarning即使在捕获之后也是如此

我正在使用Node 7.2.1和新的async/await功能.我也使用像这样的猫鼬本机ES6 Promises -

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
Run Code Online (Sandbox Code Playgroud)

我的代码流是这样的 -

async function getFollowers(){
    try {
        const followers = await User.getFollowersFromMongo(req.params.userId);
        res.send(followers);
    } catch (err) {
        winston.error('Printing Error = ', err);
        res.status(400).send({success: false, error: err});
    }
}

UserSchema.statics.getFollowersFromMongo = async(userId) => {
    try {
        let aggregateQuery = []; //some syntactical error in mongo query to produce exception

        const followers = await User.aggregate(aggregateQuery);
        return followers.map(follower => follower.followerData);
    }
    catch (err) {
        return Promise.reject(err);
    }
};
Run Code Online (Sandbox Code Playgroud)

这段代码非常好用.出现错误时会出现问题.所以我故意修改我的mongoose …

javascript mongoose node.js async-await es6-promise

6
推荐指数
1
解决办法
5149
查看次数

我对RecyclerView需要Gradle依赖吗?

我忘了将它包含在Gradle中 -

compile 'com.android.support:recyclerview-v7:23.+'
Run Code Online (Sandbox Code Playgroud)

但是没有这个记录我的项目工作正常.那么,为什么我需要在Gradle中编写它?我可以只使用appcompat吗?

compile 'com.android.support:appcompat-v7:23.2.0'
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

5
推荐指数
1
解决办法
410
查看次数

来自同一模块中相同库的多个require()

我正在查看NodeJs的@slack/client npm包的来源,并在顶部看到它们有这个:

var forEach = require('lodash').forEach;
var bind = require('lodash').bind;
var has = require('lodash').has;
var isArray = require('lodash').isArray;
var isEmpty = require('lodash').isEmpty;
var isObject = require('lodash').isObject;
Run Code Online (Sandbox Code Playgroud)

樱桃从lodash模块中挑选所有这一切有什么意义,当你只需要包含整个lib一次然后使用你需要的方法就可以使它变得更简洁?

// Include the whole lib
var _ = require('lodash');

// And later
if (_.isObject(...)) // etc
Run Code Online (Sandbox Code Playgroud)

这并不是说他们多次使用每种方法.事实上,大多数只使用一次或两次.另外,我的理解是,即使部分需要模块的一部分,整个过程也是eval()如此,因此没有优势记忆或性能方面.

我觉得这个包写的很好,所以我很想知道他们为什么选择这样做.

require commonjs node.js node-modules slack-api

5
推荐指数
0
解决办法
515
查看次数

在 MongoDB 中创建唯一数组

我有一个邮政编码字段,我们可以在其中输入多个邮政编码。它是一个数组字段,我希望它应该是唯一的。

猫鼬模式 -

const RegionalZones = new Schema({
    name :      { type : String, required : true },
    country :   { type : String, required : true },
    zipCodes :  { type : Array,  required : true},
    isBlocked:  { type: Boolean, default : false },
    serviceTax: { type: Number,  default:10},
    cancelFee:  {type: Number,   default: 7.50},
    contractorCancelFee: {type: Number,   default: 7.50},
    createdAt : {type : Date,    default : Date.now},
    updatedAt : {type : Date,    default : Date.now}
});

RegionalZones.index({ country: 1, …
Run Code Online (Sandbox Code Playgroud)

arrays indexing mongoose mongodb

1
推荐指数
1
解决办法
2673
查看次数