小编Pau*_*sma的帖子

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

不推荐使用FragmentActivity.getSupportMediaController()

为了得到一个MediaControllerCompat实例中我使用getSupportMediaController()FragmentActivity.但是这种方法已被弃用.我必须使用哪种方法代替此方法?

android mediacontroller

3
推荐指数
2
解决办法
1961
查看次数

Proguard:保持动态声明的方法

我正在使用反射调用一个超出我的Android应用程序的目标API级别的方法:

try {
    Method m = Class.forName("android.content.Context")
            .getDeclaredMethod("getExternalCacheDir");
    Object result = m.invoke(this);
    if (result instanceof File) {
        Log.v("MyApp", "external cache: "
                + ((File) result).getAbsolutePath());
        cacheDirectory = (File) result;
    } else {
        Log.v("MyApp", "non-file cache: " + result);
    }
} catch (Exception e) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我可以通过Proguard毫无问题地优化它,但它警告我:

Note: com.example.MyApp accesses a declared method 'getExternalCacheDir()' dynamically
      Maybe this is library method 'android.content.Context { java.io.File getExternalCacheDir(); }'
      Maybe this is library method 'android.content.ContextWrapper { java.io.File getExternalCacheDir(); }'
      Maybe this is library method …
Run Code Online (Sandbox Code Playgroud)

android proguard

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

读取AssetFileDescriptor时出现IOException

我正在尝试/assets使用以下代码从Android 文件夹中读取位图:

AssetFileDescriptor fd = getAssets().openFd("pic1.jpg")
Bitmap bitmap = BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor());
Run Code Online (Sandbox Code Playgroud)

我得到的例外情况表明文件权限错误:

java.io.IOException: read failed: EBADF (Bad file number)
    at libcore.io.IoBridge.read(IoBridge.java:432)
    at java.io.FileInputStream.read(FileInputStream.java:179)
    at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:168)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:309)
    at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
    at android.graphics.BitmapFactory.decodeFileDescriptor(BitmapFactory.java:670)
    at android.graphics.BitmapFactory.decodeFileDescriptor(BitmapFactory.java:688)
Run Code Online (Sandbox Code Playgroud)

尝试从输入流中读取它会产生类似的异常:

AssetFileDescriptor fd = getAssets().openFd("pic1.jpg");
FileInputStream is = fd.createInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(is);
Run Code Online (Sandbox Code Playgroud)

例外:

java.io.IOException: lseek failed: EBADF (Bad file number)
Stack trace:
  at java.io.FileInputStream.skip(FileInputStream.java:197)
  at android.content.res.AssetFileDescriptor$AutoCloseInputStream.<init>(AssetFileDescriptor.java:173)
  at android.content.res.AssetFileDescriptor.createInputStream(AssetFileDescriptor.java:138)
Run Code Online (Sandbox Code Playgroud)

直接从输入流中读取会产生另一个例外:

InputStream is = getAssets().open("pic1.jpg");
Bitmap bitmap = BitmapFactory.decodeStream(is);
Run Code Online (Sandbox Code Playgroud)

例外:

java.lang.NullPointerException: asset
  at android.content.res.AssetManager.seekAsset(Native …
Run Code Online (Sandbox Code Playgroud)

android android-assets android-resources

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

两个弦之间的距离

我不相信标准库提供了任何计算两个字符串之间距离的东西,我似乎无法在Boost StringAlgo中找到任何东西.那么,我可以使用其他任何库吗?

我对这个算法不太挑剔.Jaro-Winkler也很好,Levenshtein也是如此,我愿意接受建议,我不想编写某人已编码的内容.

c++ string algorithm distance

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

如果不存在,则创建文件和中间目录

当且仅当该文件不存在时,我想创建一个文件.

作为示例文件位置是指"C:\ user\Desktop\dir1\dir2\filename.txt"

if (!file.exists()) {
    try {
        file.createNewFile();
    } catch(IOException ioe) {                  
        ioe.printStackTrace();
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面的代码失败,因为dir1dir2不存在.

对于我的情况

  • 有时dir1和dir2可能存在,有时可能不存在.
  • 如果它们已经存在,我不想覆盖这些中间目录的内容,

如何干净地检查?

我想添加以下检查来处理这种情况:

if (!file.getParentFile().getParentFile().exists()) {
    file.getParentFile().getParentFile().mkdirs();
}
if (!file.getParentFile().exists()) {
    file.getParentFile().mkdirs();
}

if (!file.exists()) {                               
    try {
        file.createNewFile();
    } catch(IOException ioe) {
        ioe.printStackTrace();
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

或者有比这更明确的解决方案?

java file-io file java-ee java-io

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

Firebase的最大用户属性值是多少?

我将一些客户端生成的用户属性传递给Firebase Analytics,并在logcat中遇到以下消息:

W/FA:价值太长; 丢弃.值类型,名称,值长度:用户属性,comp0,37 D/FA:记录事件(FE):错误(_err),捆绑[{firebase_event_origin(_o)= auto,firebase_error_length(_el)= 37,firebase_error_value(_ev) = comp0,firebase_error(_err)= 7}]

在Firebase Analytics错误代码页面中查找了错误代码7 ,虽然它显示代码意味着"用户属性值太长",但它没有指定最大长度是多少.

用户属性值的最大长度是多少?键名也有最大长度吗?

firebase firebase-analytics

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

使用is_array()检测嵌套数组

现在我有以下数组:

    $test = array(
      'allow' => array(
          'access_level' => array(
             'manager',
             'admin',
          ),
      ),
   ),
Run Code Online (Sandbox Code Playgroud)

我正在做一个foreach循环:

foreach($test['allow'] as $key => $value) {
    if(is_array($key)){
       echo "Its an array within an array!";
    }
}
Run Code Online (Sandbox Code Playgroud)

但关键不是数组.我怎么能弄清楚access_level是一个数组还是只指向一个值?

php arrays cakephp

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

Android 4.0中的9个补丁按钮太高了

我的应用程序有9个补丁按钮,在Android 2.3中它们显示正常,但是当我在Android 4.0的设备中尝试按钮太高时,我需要它们在Android 2.3中.

他们wrap_content在布局中.

图像中的Android 2.3:http://picturepush.com/public/12502980
在图像的Android 4.0:http://picturepush.com/public/12502985
我9patch按钮:http://picturepush.com/public/12502990

有什么问题,我该如何解决?

android button nine-patch

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

Android位置api不起作用

我正在尝试在我的 android 应用程序上获取 GPS 坐标。

Criteria criteria = new Criteria();
criteria.setAltitudeRequired(false);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.POWER_HIGH);
LocationManager locationManager =
        (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

Intent i = new Intent(context, IntentListener.class);
i.setAction(Actions.ACTION_UPDATE_LOCATION);
PendingIntent pi = PendingIntent.getBroadcast(
        context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
String provider = locationManager.getBestProvider(criteria, true);
if (provider == null) return;
locationManager.requestLocationUpdates(provider, 90 * 1000, 30, pi);
Run Code Online (Sandbox Code Playgroud)

这是接收代码。

Intent service = new Intent(context, WorkerService.class);
service.setAction(Actions.ACTION_UPDATE_LOCATION);
Location location = (Location) intent.getExtras().get(
        LocationManager.KEY_LOCATION_CHANGED);

if (location == null) { // <-- Always true
    return;
}

service.putExtra("lat", location.getLatitude());
service.putExtra("lon", location.getLongitude()); …
Run Code Online (Sandbox Code Playgroud)

java gps android geolocation

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