如何在 android 中以编程方式使用共享意图发送 apk
How to send apk using share intent programatically in android
我有一些应用程序的包名称,所以现在我需要生成所有应用程序的 apk 并希望使用共享意图发送。
我尝试了很多可能的解决方案,但没有找到任何方法
我用这个 link 但没用 packing my app and share to other + android
提前致谢
我想这对你应该有帮助
ArrayList<Uri> arrayListapkFilepath; // define global
//put this code when you wants to share apk
arrayListapkFilepath = new ArrayList<Uri>();
shareAPK(getPackageName());
// you can pass bundle id of installed app in your device instead of getPackageName()
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("application/vnd.android.package-archive");
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,
arrayListapkFilepath);
startActivity(Intent.createChooser(intent, "Share " +
arrayListapkFilepath.size() + " Files Via"));
//Method
public void shareAPK(String bundle_id) {
File f1;
File f2 = null;
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List pkgAppsList = getPackageManager().queryIntentActivities(mainIntent, 0);
int z = 0;
for (Object object : pkgAppsList) {
ResolveInfo info = (ResolveInfo) object;
if (info.activityInfo.packageName.equals(bundle_id)) {
f1 = new File(info.activityInfo.applicationInfo.publicSourceDir);
Log.v("file--",
" " + f1.getName().toString() + "----" + info.loadLabel(getPackageManager()));
try {
String file_name = info.loadLabel(getPackageManager()).toString();
Log.d("file_name--", " " + file_name);
f2 = new File(Environment.getExternalStorageDirectory().toString() + "/Folder");
f2.mkdirs();
f2 = new File(f2.getPath() + "/" + file_name + ".apk");
f2.createNewFile();
InputStream in = new FileInputStream(f1);
OutputStream out = new FileOutputStream(f2);
// byte[] buf = new byte[1024];
byte[] buf = new byte[4096];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
System.out.println("File copied.");
} catch (FileNotFoundException ex) {
System.out.println(ex.getMessage() + " in the specified directory.");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
arrayListapkFilepath.add(Uri.fromFile(new File(f2.getAbsolutePath())));
}
我有一些应用程序的包名称,所以现在我需要生成所有应用程序的 apk 并希望使用共享意图发送。
我尝试了很多可能的解决方案,但没有找到任何方法
我用这个 link 但没用 packing my app and share to other + android
提前致谢
我想这对你应该有帮助
ArrayList<Uri> arrayListapkFilepath; // define global
//put this code when you wants to share apk
arrayListapkFilepath = new ArrayList<Uri>();
shareAPK(getPackageName());
// you can pass bundle id of installed app in your device instead of getPackageName()
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("application/vnd.android.package-archive");
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,
arrayListapkFilepath);
startActivity(Intent.createChooser(intent, "Share " +
arrayListapkFilepath.size() + " Files Via"));
//Method
public void shareAPK(String bundle_id) {
File f1;
File f2 = null;
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List pkgAppsList = getPackageManager().queryIntentActivities(mainIntent, 0);
int z = 0;
for (Object object : pkgAppsList) {
ResolveInfo info = (ResolveInfo) object;
if (info.activityInfo.packageName.equals(bundle_id)) {
f1 = new File(info.activityInfo.applicationInfo.publicSourceDir);
Log.v("file--",
" " + f1.getName().toString() + "----" + info.loadLabel(getPackageManager()));
try {
String file_name = info.loadLabel(getPackageManager()).toString();
Log.d("file_name--", " " + file_name);
f2 = new File(Environment.getExternalStorageDirectory().toString() + "/Folder");
f2.mkdirs();
f2 = new File(f2.getPath() + "/" + file_name + ".apk");
f2.createNewFile();
InputStream in = new FileInputStream(f1);
OutputStream out = new FileOutputStream(f2);
// byte[] buf = new byte[1024];
byte[] buf = new byte[4096];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
System.out.println("File copied.");
} catch (FileNotFoundException ex) {
System.out.println(ex.getMessage() + " in the specified directory.");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
arrayListapkFilepath.add(Uri.fromFile(new File(f2.getAbsolutePath())));
}