在 Android 应用程序的文件中设置可执行权限

Posted

技术标签:

【中文标题】在 Android 应用程序的文件中设置可执行权限【英文标题】:Set executable permissions in file from Android application 【发布时间】:2016-04-13 13:39:16 【问题描述】:

我想做一个android 应用程序,首先下载android tcpdump 二进制文件,然后执行它。文件下载成功,但无法设置可执行文件:

try 

    File file = new File( "/sdcard/tcpdump" );

    if ( file.exists() )
    
        Runtime.getRuntime().exec( new String[] "su", "-c", "chmod 777 /sdcard/tcpdump"  );
    
 
catch ( Exception e )

    e.printStackTrace();

【问题讨论】:

【参考方案1】:

默认情况下,SD 卡上的文件不可执行。将文件移动到内部存储,即data/local/tmp。目录下的文件“get”世界可执行权限。

【讨论】:

【参考方案2】:

您应该能够使用以下方法在文件上设置这些权限 (rwx rwx rwx):

file.setReadable(true, false); //Sets everyone's permissions to readable
file.setWritable(true, false); //Sets everyone's permissions to writable
file.setExecutable(true, false); //Sets everyone's permissions to executable

第一个参数将权限设置为true,第二个参数将ownerOnly参数设置为false,表示该权限适用于所有用户。

您不需要执行运行时命令来设置文件的权限。 您可以只使用 File 类上的辅助方法。 以下是各个方法文档的链接:setReadable()、setWritable() 和 setExecutable()

【讨论】:

以上是关于在 Android 应用程序的文件中设置可执行权限的主要内容,如果未能解决你的问题,请参考以下文章