小编Col*_*ire的帖子

了解.Net配置选项

我对.Net v2中dll,ASP.net网站等的.Net配置的各种配置选项感到困惑 - 尤其是在考虑配置文件在链接的UI /最终用户端的影响时.

因此,例如,我使用的一些应用程序使用我们访问的设置:

string blah = AppLib.Properties.Settings.Default.TemplatePath;
Run Code Online (Sandbox Code Playgroud)

现在,这个选项似乎很酷,因为成员是强力键入的,我将无法输入Visual Studio 2005 IDE中不存在的属性名称.我们在命令行可执行项目的App.Config中得到这样的行:

<connectionStrings>
    <add name="AppConnectionString" connectionString="XXXX" />
    <add name="AppLib.Properties.Settings.AppConnectionString" connectionString="XXXX" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

(如果我们没有第二个设置,那么将一个调试dll发布到live box的人可能已经嵌入了调试连接字符串 - eek)

我们也有像这样访问的设置:

string blah = System.Configuration.ConfigurationManager.AppSettings["TemplatePath_PDF"];
Run Code Online (Sandbox Code Playgroud)

现在,这些看起来很酷,因为我们可以从dll代码或exe/aspx代码访问设置,我们在Web或App.config中需要的只是:

<appSettings>
   <add key="TemplatePath_PDF" value="xxx"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

但是,当然可能没有在配置文件中设置值,或者字符串名称可能输入错误,因此我们遇到了一组不同的问题.

所以......如果我的理解是正确的,那么前面的方法会给出强大的输入,但是在dll和其他项目之间分配不好的值.后者提供更好的共享,但键入较弱.

我觉得我必须遗漏一些东西.目前,我甚至不关心应用程序能够将值写回配置文件,加密或类似的东西.此外,我已经决定存储任何非连接字符串的最佳方法是在数据库中...然后我要做的另一件事就是在数据库连接问题时将电话号码存储给文本人员,所以他们必须存放在DB外面!

.net c# configuration

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

更改 USERPostMessageLimit 的后果

我们的遗留应用程序之一严重依赖于PostThreadMessage()线程间通信,因此我们将注册表中的 USERPostMessageLimit 增加到超出正常的 10.000。

然而,MSDN 上的文档指出“这个限制应该足够大。如果您的应用程序超出了限制,则应该重新设计,以避免消耗如此多的系统资源。” [ 1 ]

谁能告诉我消耗太多系统资源到底是如何表现出来的?系统资源到底是什么?我可以以某种方式监视应用程序对系统资源的使用情况吗?任何信息都将非常有助于决定是否值得花费时间和精力来重新设计此应用程序。

winapi

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

原因:java.lang.IllegalStateException:无法在Android 6.0设备中创建目录

我必须使用DownloadManager存储从url下载的图像,并将其存储到sdcard中,并带有我自己的目录,例如“ xyz”。这是我的代码

File img_directory = null;

img_directory = new File(Environment.getExternalStorageDirectory() + "/xyz");
if (!img_directory.exists()) {
    img_directory.mkdirs();
    DownloadManager mgr = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
    Uri downloadUri = Uri.parse("my image url");
    DownloadManager.Request request = new DownloadManager.Request(downloadUri);
    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
      .setAllowedOverRoaming(true)
      .setTitle("Demo")
      .setDescription("Something useful. No, really.")
      .setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
      .setDestinationInExternalPublicDir(Environment.getExternalStorageDirectory().getAbsolutePath() + "/xyz", image.jpeg);
    mgr.enqueue(request);
}
Run Code Online (Sandbox Code Playgroud)

此代码将在Android 5.1.1上运行。当我在6.0中运行相同的代码时,会引发如下错误

Caused by: java.lang.IllegalStateException: Unable to create directory: /storage/emulated/0/storage/emulated/0/xyz at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:538)
Run Code Online (Sandbox Code Playgroud)

我已在清单文件中添加了“读取”和“写入”权限。如何解决此错误?有谁能帮助我?提前致谢。

android android-sdcard imagedownload android-download-manager

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

如何使用 AudioSource.VOICE_CALL 录制语音通话

试图记录通话中,我使用MediaRecorder class使用时,AudioSource.MIC或AudioSource.VOICE_COMMUNICATION它的记录只有我的声音不是来自recevier,当我用AudioSource.VOICE_CALL它给例外的参加通话..这里是代码

if(intent.getAction().equals("android.intent.action.PHONE_STATE")){
            if((bundle = intent.getExtras()) != null){
                state = bundle.getString(TelephonyManager.EXTRA_STATE);
                if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
                    inCall = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
                    wasRinging = true;
                    Toast.makeText(context, inCall + " is calling", Toast.LENGTH_SHORT).show();
                }
                else if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
                    if(wasRinging){
                        Toast.makeText(context, "Call Answered", Toast.LENGTH_SHORT).show();
                        Date date = new Date();
                        SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss");

                        String filename = "rec_" + format.format(date) + ".mp3";
                        String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath();
                        String fileUri = path + "/" + filename;
                        Log.v("testing uri", fileUri);
                        File file = new File(fileUri);

                        recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); …
Run Code Online (Sandbox Code Playgroud)

android recorder

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

连接到已配置的网络时,Android WiFi Manager网络开关

在最新版本的Android(特别是在Pixel上)上与Wifi Manager交互时,我看到一些有趣的行为。我正在尝试使WIFI管理器连接到已知的热点(IOT设备)。

Google在博客文章中清楚地列出了步骤,如果您使用的是棒棒糖,则需要绑定到特定的网络以确保您的网络请求通过给定的网络传递。可以在这里找到步骤https://android-developers.googleblog.com/2016/07/connecting-your-app-to-wifi-device.html

列出的步骤在正常情况下可以正常工作(您可以通过扫描搜索接入点并进行添加网络,因为之前没有进行配置)。但是,如果接入点是从Wifi列表中手动连接的,则添加网络将会失败(从Android M及更高版本开始,您将无法更改由其他应用或系统完成的wifi配置),而我必须连接至已配置的网络。这种情况总是会在大约20-30秒后导致网络切换。

我认为这是由https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java引起的,因为Google打电话回家并检查是否网络有互联网。

但是我不知道为什么只有在以前通过“设置”->“ Wifi”连接网络时才会发生这种情况

很抱歉,如果有人知道为什么会发生这种长篇大论的帖子,并且有任何阻止它的方法,我们将不胜感激。请注意,无法在M及更高版本上更新wifi配置。另外,禁用网络也无济于事。同样有趣的是,这仅发生在像素上,而不发生在Samsung设备上(没有网络代理?)。

android android-networking wifimanager android-wifi

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

找不到参数api()的方法[目录'libs']

打开文件

这是我的gradle文件:

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 27
        buildToolsVersion "27.0.1"
        defaultConfig {
            applicationId "com.landdrops.cricketfantacy.androidbottom"
            minSdkVersion 21
            targetSdkVersion 27
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard android.txt'), 'proguard-rules.pro'
            }
        }
    }

    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation 'com.android.support:appcompat-v7:27.0.1'
        implementation 'com.android.support:design:27.0.1'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test.runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'
    }
Run Code Online (Sandbox Code Playgroud)

我正进入(状态

错误:(23,0)在类型org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler的对象上找不到参数[目录'libs']的方法实现()。打开文件

android android-studio android-gradle-3.0

5
推荐指数
2
解决办法
6949
查看次数

Android 中数组索引越界

我在 crashlytics 上遇到以下异常。请帮我解决这个问题

Fatal Exception: java.lang.ArrayIndexOutOfBoundsException
length=3; index=3
android.util.ContainerHelpers.binarySearch (ContainerHelpers.java:47)
android.util.LongSparseArray.get (LongSparseArray.java:113)
android.util.LongSparseArray.get (LongSparseArray.java:104)
android.graphics.Typeface.create (Typeface.java:177)
arrow_right
android.support.v4.graphics.TypefaceCompatApi24Impl.createFromFontInfo (Unknown Source)
android.support.v4.graphics.TypefaceCompat.createFromFontInfo (Unknown Source)
android.support.v4.provider.FontsContractCompat.buildTypeface (Unknown Source)
android.support.v4.provider.FontsContractCompat$4.run (Unknown Source)
android.os.Handler.handleCallback (Handler.java:761)
android.os.Handler.dispatchMessage (Handler.java:98)
android.os.Looper.loop (Looper.java:156)
android.os.HandlerThread.run (HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)

我认为这个问题与android中的typeFace有关,如上面的异常中所写

"android.support.v4.graphics.TypefaceCompatApi24Impl.createFromFontInfo (Unknown Source)"
Run Code Online (Sandbox Code Playgroud)

我正在使用以下类来设置文本字体。请看下面的课程。

Fatal Exception: java.lang.ArrayIndexOutOfBoundsException
length=3; index=3
android.util.ContainerHelpers.binarySearch (ContainerHelpers.java:47)
android.util.LongSparseArray.get (LongSparseArray.java:113)
android.util.LongSparseArray.get (LongSparseArray.java:104)
android.graphics.Typeface.create (Typeface.java:177)
arrow_right
android.support.v4.graphics.TypefaceCompatApi24Impl.createFromFontInfo (Unknown Source)
android.support.v4.graphics.TypefaceCompat.createFromFontInfo (Unknown Source)
android.support.v4.provider.FontsContractCompat.buildTypeface (Unknown Source)
android.support.v4.provider.FontsContractCompat$4.run (Unknown Source)
android.os.Handler.handleCallback (Handler.java:761)
android.os.Handler.dispatchMessage (Handler.java:98)
android.os.Looper.loop (Looper.java:156)
android.os.HandlerThread.run (HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)

android

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

MySQL为什么不在用作布尔值的int字段上使用索引?

select * from myTable where myInt
Run Code Online (Sandbox Code Playgroud)

即使myInt字段上有索引,在解释查询时也不会显示任何possible_keys.

编辑:
有问题的索引不是唯一的.

mysql indexing

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

将javascript对象数组转换为数组数组

我在ES6中寻找一种优雅的方式来转换这个数组:

var src = [{x:1,y:'a'},{x:2,y:'b'}];
Run Code Online (Sandbox Code Playgroud)

到这个数组:

var desc = [[1,2],["a","b"]];
Run Code Online (Sandbox Code Playgroud)

其中包含所有属性的数组和所有值的一个数组.

为此,我写了这段代码:

var src = [{x:1,y:'a'},{x:2,y:'b'}];

var prop1 = [];
var prop2 = [];

src.forEach(item => {
    prop1.push(item.x)
    prop2.push(item.y);
});

var desc = [prop1, prop2];
Run Code Online (Sandbox Code Playgroud)

它工作正常,但它很长,所以我正在寻找最终的改进和短代码.

javascript arrays ecmascript-6

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

Android WifiManager::getScanResults() 仍然返回空列表

作为一个新手到Android编程,我试图让使用WifiManager的SSID列表getScanResults()的方法,但它仍然是空的,即使我已经授予它的ACCESS_COARSE_LOCATION权限,以及对CHANGE_WIFI_STATE(对于startScan()方法),无论是在清单,并通过检查/在运行时请求它。

在 的广播接收器中SCAN_RESULTS_AVAILABLE_ACTION,我什至用键检查意图的额外字段,EXTRA_RESULTS_UPDATED结果返回true。

然而,list.size()总是返回 0。

我在这里缺少什么?我正在 Android 7.0 API 24 设备上进行测试。

编辑:代码如下:

主活动.java:

public class MainActivity extends Activity implements View.OnClickListener {
    private static final String TAG="WiFiDemo";

    WifiManager wifiManager;
    WifiBroadcastReceiver wifiReceiver;

    TextView textView;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        Log.d(TAG, "onCreate()");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Check for permissions
        if ((ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED)
            || (ContextCompat.checkSelfPermission(this, Manifest.permission.CHANGE_WIFI_STATE)
                    != PackageManager.PERMISSION_GRANTED))
        {
            Log.d(TAG, "Requesting permissions");

            //Request permission
            ActivityCompat.requestPermissions(this,
                    new …
Run Code Online (Sandbox Code Playgroud)

android wifimanager

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