Codenameone 未找到使用Android的Codename One本机代码的活动

Codenameone 未找到使用Android的Codename One本机代码的活动,codenameone,Codenameone,我正在尝试从我的应用程序安装.apk文件 我将.apk文件放在其他应用程序也可以访问的目录中,然后在Android native中调用以下代码: private static Activity activity() { return com.codename1.impl.android.AndroidNativeUtil.getActivity(); } public void install(String fileName) { Intent intent = new

我正在尝试从我的应用程序安装
.apk
文件

我将
.apk
文件放在其他应用程序也可以访问的目录中,然后在Android native中调用以下代码:

private static Activity activity() {
    return com.codename1.impl.android.AndroidNativeUtil.getActivity();
}   

public void install(String fileName) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.parse(getDownloadPath() + File.separator + fileName), "application/vnd.android.package-archive");
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    activity().startActivity(intent);
}

public String getDownloadPath() {
    return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + File.separator + "myfolder";
}
我还向构建提示添加了以下权限:

<uses-permission     android:name="android.permission.INSTALL_PACKAGES" />
用于安装的代码片段也可以在原始Android应用程序上成功运行


是不是有什么事我忘了做,或者在CodenameOne中使用了错误的活动?

安装嵌入到应用程序中的APK听起来像是不可能的事情,您会收到一个错误,即没有可用的活动来处理该文件。

安装嵌入到应用程序中的APK听起来像是不可能的事情,您会收到一个不可能的错误“活动”可用于处理该文件。

此行存在问题:

 intent.setDataAndType(Uri.parse(getDownloadPath() + File.separator + fileName), "application/vnd.android.package-archive");
应该是:

 intent.setDataAndType(Uri.fromFile(new File(getDownloadPath() + File.separator + fileName)), "application/vnd.android.package-archive");
原因是前面添加了
文件://


另外,似乎不需要
INSTALL\u PACKAGES
权限。

问题在于这一行:

 intent.setDataAndType(Uri.parse(getDownloadPath() + File.separator + fileName), "application/vnd.android.package-archive");
应该是:

 intent.setDataAndType(Uri.fromFile(new File(getDownloadPath() + File.separator + fileName)), "application/vnd.android.package-archive");
原因是前面添加了
文件://


另外,似乎不需要
INSTALL\u PACKAGES
权限。

Hi,正如问题中所解释的,它在纯android应用程序上确实成功运行。APK未嵌入应用程序中,它位于设备上的文件夹中,其他应用程序也可以访问它。这只是开始安装任务,它将提示用户并开始安装。基本上是“打开”apk并让操作系统从那里接管。您是如何将权限添加到构建提示的?在什么暗示下?你用图形用户界面了吗?您确定这是文件所在的确切位置,并且此代码段在该设备上以该路径本机工作吗?请注意,谷歌在回顾中做出了类似的改变。您好,正如问题中所解释的,它确实成功地在纯android应用程序上工作。APK未嵌入应用程序中,它位于设备上的文件夹中,其他应用程序也可以访问它。这只是开始安装任务,它将提示用户并开始安装。基本上是“打开”apk并让操作系统从那里接管。您是如何将权限添加到构建提示的?在什么暗示下?你用图形用户界面了吗?您确定这是文件所在的确切位置,并且此代码段在该设备上以该路径本机工作吗?请注意,回顾过去,谷歌会做出类似的改变。