0

I Make a button for both apk and link share link share is working fine but when app will be share the apk name is changed to "untitled" i want the same name as my apk name

my code for link

btnShare.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

           ApplicationInfo app = getApplicationContext().getApplicationInfo();
            String filePath = app.publicSourceDir;
            Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            Uri uri = Uri.parse(filePath);
            sharingIntent.setType("*/*");
            sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
            sharingIntent.putExtra(Intent.EXTRA_TEXT, "Click to blue link and download thegame. https://drive.google.com/open?id=10Nc5BoYn4NZ_O8ae32UVQwyzdCzFxNy");
            startActivity(Intent.createChooser(sharingIntent, "Share app using"));
        }
    });
ArjunPatidar
  • 3
  • 1
  • 4
  • 1
    AFAIK I don't think this is possible . You can share a link to your application but you can not force data sharing apps to share file on some link which are not on device storage. Unless this is a feature of sharing apps (like xander or sharIt). – ADM Mar 24 '18 at 07:05

1 Answers1

2

If you want to share your app link and your apk file, do it as separate task. (with two buttons)

Sharing link can be done as you mentioned since it is a text.

To share apk file,First you need to get your app apk file as,

 ApplicationInfo packageinfo = context.getPackageManager().getApplicationInfo(yourpackagename, 0);
 File file = new File(packageinfo.publicSourceDir);

Then copy the file to another one

try {
    //Make new directory in new location
    File tempFile = new File(getExternalCacheDir() + "/ExtractedApk");
    //If directory doesn't exists create new
    if (!tempFile.isDirectory())
        if (!tempFile.mkdirs())
            return;
    //Get application's name and convert to lowercase
    tempFile = new File(tempFile.getPath() + "/" + "appname" + ".apk");
    //If file doesn't exists create new
    if (!tempFile.exists()) {
        if (!tempFile.createNewFile()) {
            return;
        }
    }
    //Copy file to new location
    InputStream in = new FileInputStream(originalApk);
    OutputStream out = new FileOutputStream(tempFile);

    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    in.close();
    out.close();
    System.out.println("File copied.");
    //Open share dialog
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(tempFile));
    startActivity(Intent.createChooser(intent, "Share app via"));

} catch (IOException e) {
    e.printStackTrace();
}

source is here

You can share it using created file path

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri uri = Uri.parse(filepath);
sharingIntent.setType("*/*");
sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
sharingIntent.putExtra(Intent.EXTRA_TEXT, "Click to blue link and download thegame. https://drive.google.com/open?id=10Nc5BoYn4NZ_O8ae32UVQwyzdCzFxNy");
startActivity(Intent.createChooser(sharingIntent, "Share app using"));

This will change content as text/apk based on chosen application

Jyoti JK
  • 2,141
  • 1
  • 17
  • 40