0

I'm trying to share my app apk via share option in navigation drawer. This code works for text but how to do it for Apk?

else if(id==share){
Intent sharingIntent = new Intent("android.intent.action.send");
sharingIntent.setType("text/plain");
sharingIntent.putExtra("android.intent.extr.TEXT", "Theshared text");
startActivity(Intent.createChooser(sharingIntent, "Share Using"));
}

1 Answers1

0

You can use the following code to share your APK,

public static void shareAPK(Activity activity) {
    if (ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
        try {
            // First we should copy apk file from source dir to ur external dir
            ApplicationInfo app = activity.getPackageManager().getApplicationInfo(activity.getPackageName(), 0);

            File apkFile = new File(app.sourceDir);
            File backupFile = new File(Environment.getExternalStorageDirectory(), "[ANY NAME FOR APK].apk");

            copy(apkFile, backupFile);

            Intent shareIntent = getShareIntent(backupFile);
            activity.startActivity(Intent.createChooser(shareIntent, "Send [AppName] application APK using"));
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

public static Intent getShareIntent(File file) {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    intent.setType("application/vnd.android.package-archive");
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    return intent;
}


public static void copy(File src, File dst) throws IOException {
    FileInputStream inStream = new FileInputStream(src);
    FileOutputStream outStream = new FileOutputStream(dst);
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    inStream.close();
    outStream.close();
}
Muthukrishnan Rajendran
  • 11,122
  • 3
  • 31
  • 41