android文件打开及Intent及使用

实现通过代码打开一个文件需要2部分,一部分是要获取到不同文件的后缀,以便根据需求匹配相应的Intent,另一个就是不同格式的文件打开的Intent不同

1、在values目录下定义后缀数组文件fileendings

<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="fileEndingImage">
        <item>.png</item>
        <item>.gif</item>
        <item>.jpg</item>
        <item>.jpeg</item>
        <item>.bmp</item>
    </array>
<array name="fileEndingAudio">
        <item>.mp3</item>
        <item>.wav</item>
        <item>.ogg</item>
        <item>.midi</item>
    </array>
<array name="fileEndingVideo">
        <item>.mp4</item>
        <item>.rmvb</item>
        <item>.avi</item>
        <item>.flv</item>
    </array>
<array name="fileEndingPackage">
        <item>.jar</item>
        <item>.zip</item>
        <item>.rar</item>
        <item>.gz</item>
        <item>.apk</item>
        <item>.img</item>
    </array>
<array name="fileEndingWebText">
        <item>.htm</item>
        <item>.html</item>
        <item>.php</item>
        <item>.jsp</item>
    </array>
<array name="fileEndingText">
        <item>.txt</item>
        <item>.java</item>
        <item>.c</item>
        <item>.cpp</item>
        <item>.py</item>
        <item>.xml</item>
        <item>.json</item>
        <item>.log</item>
    </array>
<array name="fileEndingWord">
    <item>.doc</item>
    <item>.docx</item>
</array>
<array name="fileEndingExcel">
    <item>.xls</item>
    <item>.xlsx</item>
</array>
<array name="fileEndingPPT">
    <item>.ppt</item>
    <item>.pptx</item>
</array>

<array name="fileEndingPdf">
    <item>.pdf</item>
</array>
</resources>

2、定义OpenFiles工具类,只需传输File参数即可,然后通过返回的Intent打开文件

public class OpenFiles {
     //android获取一个用于打开HTML文件的intent
       public static Intent getHtmlFileIntent(File file)
       {
           Uri uri = Uri.parse(file.toString()).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(file.toString()).build();
           Intent intent = new Intent("android.intent.action.VIEW");
           intent.setDataAndType(uri, "text/html");
           return intent;
       }
     //android获取一个用于打开图片文件的intent
       public static Intent getImageFileIntent(File file)
       {
           Intent intent = new Intent("android.intent.action.VIEW");
           intent.addCategory("android.intent.category.DEFAULT");
           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           Uri uri = Uri.fromFile(file);
           intent.setDataAndType(uri, "image/*");
           return intent;
       }
       //android获取一个用于打开PDF文件的intent
       public static Intent getPdfFileIntent(File file)
       {
         Intent intent = new Intent("android.intent.action.VIEW");
         intent.addCategory("android.intent.category.DEFAULT");
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         Uri uri = Uri.fromFile(file);
         intent.setDataAndType(uri, "application/pdf");
         return intent;
       }
     //android获取一个用于打开文本文件的intent
     public static Intent getTextFileIntent(File file)
     {   
       Intent intent = new Intent("android.intent.action.VIEW");
       intent.addCategory("android.intent.category.DEFAULT");
       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       Uri uri = Uri.fromFile(file);
       intent.setDataAndType(uri, "text/plain");
       return intent;
     }
   
     //android获取一个用于打开音频文件的intent
       public static Intent getAudioFileIntent(File file)
       {
         Intent intent = new Intent("android.intent.action.VIEW");
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         intent.putExtra("oneshot", 0);
         intent.putExtra("configchange", 0);
         Uri uri = Uri.fromFile(file);
         intent.setDataAndType(uri, "audio/*");
         return intent;
       }
       //android获取一个用于打开视频文件的intent
       public static Intent getVideoFileIntent(File file)
       {
         Intent intent = new Intent("android.intent.action.VIEW");
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         intent.putExtra("oneshot", 0);
         intent.putExtra("configchange", 0);
         Uri uri = Uri.fromFile(file);
         intent.setDataAndType(uri, "video/*");
         return intent;
       }
   
   
       //android获取一个用于打开CHM文件的intent
       public static Intent getChmFileIntent(File file)
       {
         Intent intent = new Intent("android.intent.action.VIEW");
         intent.addCategory("android.intent.category.DEFAULT");
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         Uri uri = Uri.fromFile(file);
         intent.setDataAndType(uri, "application/x-chm");
         return intent;
       }
   
   
     //android获取一个用于打开Word文件的intent
       public static Intent getWordFileIntent(File file)
       {
         Intent intent = new Intent("android.intent.action.VIEW");
         intent.addCategory("android.intent.category.DEFAULT");
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         Uri uri = Uri.fromFile(file);
         intent.setDataAndType(uri, "application/msword");
         return intent;
       }
     //android获取一个用于打开Excel文件的intent
       public static Intent getExcelFileIntent(File file)
       {
         Intent intent = new Intent("android.intent.action.VIEW");
         intent.addCategory("android.intent.category.DEFAULT");
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         Uri uri = Uri.fromFile(file);
         intent.setDataAndType(uri, "application/vnd.ms-excel");
         return intent;
       }
     //android获取一个用于打开PPT文件的intent
       public static Intent getPPTFileIntent(File file)
       {
         Intent intent = new Intent("android.intent.action.VIEW");
         intent.addCategory("android.intent.category.DEFAULT");
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         Uri uri = Uri.fromFile(file);
         intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
         return intent;
       }
       //android获取一个用于打开apk文件的intent
       public static Intent getApkFileIntent(File file)
       {
           Intent intent = new Intent(); 
           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           intent.setAction(android.content.Intent.ACTION_VIEW); 
           intent.setDataAndType(Uri.fromFile(file),  "application/vnd.android.package-archive"); 
           return intent;
       }
      
      
}

3、定义用于检查要打开的文件的后缀是否在遍历后缀数组中

 private boolean checkEndsWithInStringArray(String checkItsEnd,
                    String[] fileEndings){
        for(String aEnd : fileEndings){
            if(checkItsEnd.endsWith(aEnd))
                return true;
        }
        return false;
    }

4、通过调用OpenFiles类返回的Intent,打开相应的文件

if(currentPath!=null&¤tPath.isFile())
                {
                    String fileName = currentPath.toString();
                    Intent intent;
                    if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingImage))){
                        intent = OpenFiles.getImageFileIntent(currentPath);
                        startActivity(intent);
                    }else if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingWebText))){
                        intent = OpenFiles.getHtmlFileIntent(currentPath);
                        startActivity(intent);
                    }else if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingPackage))){
                        intent = OpenFiles.getApkFileIntent(currentPath);
                        startActivity(intent);

                    }else if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingAudio))){
                        intent = OpenFiles.getAudioFileIntent(currentPath);
                        startActivity(intent);
                    }else if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingVideo))){
                        intent = OpenFiles.getVideoFileIntent(currentPath);
                        startActivity(intent);
                    }else if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingText))){
                        intent = OpenFiles.getTextFileIntent(currentPath);
                        startActivity(intent);
                    }else if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingPdf))){
                        intent = OpenFiles.getPdfFileIntent(currentPath);
                        startActivity(intent);
                    }else if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingWord))){
                        intent = OpenFiles.getWordFileIntent(currentPath);
                        startActivity(intent);
                    }else if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingExcel))){
                        intent = OpenFiles.getExcelFileIntent(currentPath);
                        startActivity(intent);
                    }else if(checkEndsWithInStringArray(fileName, getResources().
                            getStringArray(R.array.fileEndingPPT))){
                        intent = OpenFiles.getPPTFileIntent(currentPath);
                        startActivity(intent);
                    }else
                    {
                        showMessage("无法打开,请安装相应的软件!");
                    }
                }else
                {
                    showMessage("对不起,这不是文件!");
                }

效果

  \


智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值