0

当用户从列表视图中选择它时,我想打开一个 excel 文件。我想知道打开的文件是否被编辑。当用户编辑文件时,我想将该文件上传到服务器,我该怎么做。我尝试使用以下代码,但没有调用“onactivityresult”方法。

代码:

清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.m.media"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17"
        />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission  android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission  android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />




        </intent-filter>
        </activity>
        <activity android:name=".MyActivity" >
    <intent-filter>
        <action android:name="android.intent.action.SEND_MULTIPLE" />
         <action android:name="android.intent.action.SEND"/>
         <action android:name="android.intent.action.EDIT"/>
           <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />

        <!-- <data android:mimeType="image/*" />
        <data android:mimeType="video/*" /> -->
        <data android:mimeType="*/*" />


    </intent-filter>
</activity>

    </application>

</manifest>  

我的活动:

    listviewv.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position,
                        long id) {

                    String item=filenames.get(position);
                    String ext = item.substring(item.lastIndexOf(".")+1);
                    MimeTypeMap mime = MimeTypeMap.getSingleton();
                    String type = mime.getMimeTypeFromExtension(ext);
                    File videoFile2Play = new File(filepath.get(position));
                    Intent i = new Intent();

                    i.setAction(android.content.Intent.ACTION_EDIT);
                    i.setDataAndType(Uri.fromFile(videoFile2Play), type);
                    i.putExtra("finishActivityOnSaveCompleted", true);
                    startActivityForResult(i, EDIT_CONTACT_RESULT);
                   // Toast.makeText(getBaseContext(), filepath.get(position), Toast.LENGTH_LONG).show();

                }
            });


 @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
          if (requestCode == EDIT_CONTACT_RESULT) {
                // Make sure the request was successful
                if (resultCode == RESULT_OK) {

                    Toast.makeText(getBaseContext(), "edited", Toast.LENGTH_LONG).show();
                }

     }
     }

但是当我保存编辑更改时,不会调用 onactivityresult 方法。如何在打开的文件中发生编辑时收到通知。请帮我解决这个问题。

我正在使用安卓 vesion-4.0.3。

4

1 回答 1

0

基于您被onActivityResult()调用的事实RESULT_CANCELED,我假设您调用 EDIT 操作时启动的任何活动都在另一个任务中运行。在这种情况下,您不能依赖从startActivityOnResult().

要查看文件是否已被修改,您可能需要使用不同的方法。尝试实现 aFileObserver来观看您正在编辑的文件并监听MODIFY事件。

于 2013-07-24T09:01:22.300 回答