2015-03-19 2 views
0

Я следую за этим answer для выполнения моей задачи. Все работает хорошо, за исключением последней части,Установить обои в whatsapp после получения пути

if(result!=null) 
{ 

    Toast.makeText(getApplicationContext(), "Image saved in Gallery !", Toast.LENGTH_LONG).show(); 

    if(isinint) //check if any app cares for the result 
    { 
     Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND, Uri.fromFile(new File(result.toString()))); //Create a new intent. First parameter means that you want to send the file. The second parameter is the URI pointing to a file on the sd card. (openprev has the datatype File) 

     ((Activity) ImageListActivity.this).setResult(Activity.RESULT_OK, shareIntent); //set the file/intent as result 
     ((Activity) ImageListActivity.this).finish(); //close your application and get back to the requesting application like GMail and WhatsApp 
     return; //do not execute code below, not important 
    } 
} 

Наконец-то ничто не сработает, но обои также не установлены в whatsapp.

Может кто-нибудь, пожалуйста, дай мне знать, почему он не работает?

Любая помощь предоставляется.

Благодаря

+0

Где вы указываете isinint? Вы отлаживали код и проверяли, в какой момент он перестает работать? Измените свой вопрос и дайте больше информации. –

+0

@JamesCameron Да, я уже отлаживаю его, он выполняет все строки, без ошибок, а затем я перехожу в чат whatsapp, где обои не установлены –

+0

Нашли еще ответ? Я предполагаю, что намерение ACTION_SEND может быть неправильным, поскольку оно может быть вызвано другим намерением. Отлаживайте намерение, которое вы получаете при вызове приложения. –

ответ

0

Вы можете использовать следующий код ..

OnButtonClick(){ 
ImageProcessing imageProcessing = new ImageProcessing(); 
      Bitmap bitmap = imageProcessing.takeScreenshot(getWindow().getDecorView().findViewById(R.id.view_thought)); 
      imageProcessing.saveBitmap(bitmap); 
      Intent intent = imageProcessing.setAsOption(this,imageProcessing.getSavedImagePath()); 
      startActivityForResult(Intent.createChooser(intent, "Set image as"), 200); 
} 

и внедрить новый класс обработка изображений

public class ImageProcessing { 
private File imagesPath; 
public void saveBitmap(Bitmap bitmap) { 
    imagesPath = new File(Environment.getExternalStorageDirectory() + "/screenshot.jpg"); 
    FileOutputStream fos; 
    try { 
     fos = new FileOutputStream(imagesPath); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
     fos.flush(); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     Log.e("POS", e.getMessage(), e); 
    } catch (IOException e) { 
     Log.e("POS", e.getMessage(), e); 
    } 
} 
public File getSavedImagePath(){ 
    imagesPath = new File(Environment.getExternalStorageDirectory() + "/screenshot.jpg"); 
    return imagesPath; 
} 

public Bitmap takeScreenshot(View rootView) { 
    rootView.setDrawingCacheEnabled(true); 
    return rootView.getDrawingCache(); 
} 
public Intent setAsOption(Context cntxt,File imagesPath){ 
    /*File imagesPath = new File(Environment.getExternalStorageDirectory() + "/screenshot.jpg");*/ 
    Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); 
    if(imagesPath.exists()){ 
     Uri contentUri = FileProvider.getUriForFile(cntxt, BuildConfig.APPLICATION_ID+".Utility.GenericFileProvider",imagesPath); 

     intent.setDataAndType(contentUri, "image/jpg"); 
     intent.putExtra("mimeType", "image/jpg"); 
     intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    }else { 
     Toast.makeText(cntxt,"Not a wallpaper",Toast.LENGTH_SHORT).show(); 
    } 
    return intent; 
} 

}

И menifest оных:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.SET_WALLPAPER" /> 
Смежные вопросы