2016-09-13 6 views
0

Это мой код, где я пытаюсь отправить изображение в whtsapp с помощью намерения, но он дает файл не найден за исключениемПоследние обновления WhatsApp оленья кожа позволяет отправить изображение через намерение

Uri uri = Uri.parse("android.resource://com.company.demoapp/" + resId); 
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_TEXT, "this is a new url"); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_STREAM,uri); 
intent.setType("image/jpeg"); 
intent.setPackage("com.whatsapp"); 
mContext.startActivity(intent); 
+0

Убедитесь, что ваш путь к файлу правильно и файл существует, или нет. –

+0

@md gouse вы попробовали мой ответ –

+0

@ Правильный путь файла PriyankPatel –

ответ

0

Shymaa Othman Answer here working fine as you want

Вам нужно дать разрешение также в андроида MainFest

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

также для Android 6.0 и выше разрешение выполнения потребности в WRITE_EXTERNAL_STORAGE

private static final int REQUEST_RUNTIME_PERMISSION = 123; 

if (CheckPermission(youactivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 

     shareImageWhatsApp(); 


    } else { 
     // you do not have permission go request runtime permissions 
     RequestPermission(AccesspointCheck.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_RUNTIME_PERMISSION); 
    } 




public void RequestPermission(Activity thisActivity, String Permission, int Code) { 
    if (ContextCompat.checkSelfPermission(thisActivity, 
      Permission) 
      != PackageManager.PERMISSION_GRANTED) { 
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
      Permission)) { 
     shareImageWhatsApp(); 


    } else { 
     ActivityCompat.requestPermissions(thisActivity, 
       new String[]{Permission}, 
       Code); 
    } 
    } 
} 

public boolean CheckPermission(Activity context, String Permission) { 
    if (ContextCompat.checkSelfPermission(context, 
      Permission) == PackageManager.PERMISSION_GRANTED) { 
    return true; 
    } else { 
    return false; 
    } 
} 

вызов shareImageWhatsApp в классе

public void shareImageWhatsApp() { 

    Bitmap adv = BitmapFactory.decodeResource(getResources(), R.drawable.launcher_icon); 
    Intent share = new Intent(Intent.ACTION_SEND); 
    share.setType("image/jpeg"); 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    adv.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    File f = new File(Environment.getExternalStorageDirectory() 
      + File.separator + "temporary_file.jpg"); 
    try { 
    f.createNewFile(); 
    new FileOutputStream(f).write(bytes.toByteArray()); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    share.putExtra(Intent.EXTRA_STREAM, 
      Uri.parse(Environment.getExternalStorageDirectory()+ File.separator+"temporary_file.jpg")); 
    if(isPackageInstalled("com.whatsapp",this)){ 
    share.setPackage("com.whatsapp"); 
    startActivity(Intent.createChooser(share, "Share Image")); 

    }else{ 

    Toast.makeText(getApplicationContext(), "Please Install Whatsapp", Toast.LENGTH_LONG).show(); 
    } 

} 

private boolean isPackageInstalled(String packagename, Context context) { 
    PackageManager pm = context.getPackageManager(); 
    try { 
    pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES); 
    return true; 
    } catch (PackageManager.NameNotFoundException e) { 
    return false; 
    } 
} 
+0

Что такое REQUEST_RUNTIME_PERMISSION, который вы передали в параметрах. –

+0

private static final int REQUEST_RUNTIME_PERMISSION = 123; –

Смежные вопросы