2017-06-14 103 views
0

我试图通过导航抽屉中的共享选项分享我的应用程序apk。这段代码适用于文本,但是如何为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")); 
} 
+0

你要共享的APK本身还是你想分享Play商店中的网址是什么? –

+0

APK本身@ArunShankar –

+0

尝试先搜索你的问题,人们已经怀疑你现在拥有了。 [请参阅您的解决方案](https://stackoverflow.com/a/37986490/6047274) –

回答

0

您可以使用下面的代码共享您的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(); 
} 
相关问题