2013-08-21 53 views
0

我有一个应用程序,将壁纸应用到主屏幕与图像匹配的屏幕尺寸。 这是我设置墙纸代码:WallpaperManager suggestDesiredDimensions()对三星手机没有任何影响

WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this); 
BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
try { 
    BitmapFactory.decodeResource(getResources(), wallpapersPagerAdapter.getWallpaperId(position), options); 
    wallpaperManager.suggestDesiredDimensions(options.outWidth, options.outHeight); 

    wallpaperManager.setResource(wallpapersPagerAdapter.getWallpaperId(position)); 
} catch (IOException e) { 
    Log.e(Constants.LOG_TAG, e.getMessage()); 
    Toast.makeText(MainActivity.this, R.string.err_can_not_set_wallpaper, Toast.LENGTH_SHORT).show(); 
    return; 
} 

而且它在大多数设备完美workd,但suggestDesiredDimensions()对星系S4和Galaxy S3(我想其他的三星手机将有同样的问题)完全没有影响。无论所需尺寸如何,此手机图像都会缩放。我发现Backgrounds HD应用程序不存在这个问题。所以我想知道如何在没有裁剪的情况下在银河s4(或s3)上设置壁纸,假设我的壁纸的实际尺寸为1080x1920?

回答

0

那么,我使用Set as意图修复它。似乎无法在TouchWiz上设置尺寸。这里是我的代码:

 Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); 
     MimeTypeMap map = MimeTypeMap.getSingleton(); 

     String mimeType = map.getMimeTypeFromExtension("jpg"); 
     File file = new File(filePath); 

     Uri uri = Uri.fromFile(file); 
     intent.setDataAndType(uri, mimeType); 
     intent.putExtra("mimeType", mimeType); 
     intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
     context.hideProgressDialog(); 
     context.startActivityForResult(Intent.createChooser(intent, "Set as"), 
       Constants.REQUEST_CODE_SET_WALLPAPER); 
相关问题