我感到意外的是gnclmorais解決方案應該管用。因爲它在一個intent-filter
中有多個data
條目對我無效。到底是什麼做的工作是多intent-filter
在一個activity
:
<activity
android:description='@string/Activity_Description'
android:icon='@drawable/ic_launcher'
android:label='@string/Activity_Name'
android:name='net.sourceforge.uiq3.fx603p.Calculator_Activity'
>
<intent-filter>
<action
android:name='android.intent.action.MAIN'
></action>
<category
android:name='android.intent.category.LAUNCHER'
></category>
</intent-filter>
<intent-filter
android:icon='@drawable/ic_fx_603p_pf'
android:label='FX-603P Simulator Program'
android:priority='1'
>
<category
android:name='android.intent.category.DEFAULT'
></category>
<action
android:name='android.intent.action.VIEW'
></action>
<data
android:host='*'
android:pathPattern='.*\\.pf'
android:scheme='file'
></data>
</intent-filter>
<intent-filter
android:icon='@drawable/ic_fx_603p_df'
android:label='FX-603P Simulator Datafile'
android:priority='1'
>
<category
android:name='android.intent.category.DEFAULT'
></category>
<action
android:name='android.intent.action.VIEW'
></action>
<data
android:host='*'
android:pathPattern='.*\\.df'
android:scheme='file'
></data>
</intent-filter>
<intent-filter
android:icon='@drawable/ic_fx_603p_af'
android:label='FX-603P Simulator Allfile (Data and Program)'
android:priority='1'
>
<category
android:name='android.intent.category.DEFAULT'
></category>
<action
android:name='android.intent.action.VIEW'
></action>
<data
android:host='*'
android:pathPattern='.*\\.af'
android:scheme='file'
></data>
</intent-filter>
<intent-filter
android:icon='@drawable/ic_fx_603p_pf'
android:label='FX-603P Simulator Program'
android:priority='1'
>
<category
android:name='android.intent.category.DEFAULT'
></category>
<action
android:name='android.intent.action.VIEW'
></action>
<data
android:host='*'
android:mimeType='application/x-fx-602p.program'
></data>
</intent-filter>
<intent-filter
android:icon='@drawable/ic_fx_603p_df'
android:label='FX-603P Simulator Datafile'
android:priority='1'
>
<category
android:name='android.intent.category.DEFAULT'
></category>
<action
android:name='android.intent.action.VIEW'
></action>
<data
android:host='*'
android:mimeType='application/x-fx-602p.data'
></data>
</intent-filter>
<intent-filter
android:icon='@drawable/ic_fx_603p_af'
android:label='FX-603P Simulator Allfile (Data and Program)'
android:priority='1'
>
<category
android:name='android.intent.category.DEFAULT'
></category>
<action
android:name='android.intent.action.VIEW'
></action>
<data
android:host='*'
android:mimeType='application/x-fx-602p.all'
></data>
</intent-filter>
</activity>
注意,有一個data
進口在pathPattern
和mimeType
沒有正常工作。最後並非最不重要我會建議在獲取文件名時進行一些空檢查:
/**
* <p>Open calculator and load file (if one was passed).</p>
* @see android.app.Activity#onStart()
*/
@Override
public void onStart()
{
android.util.Log.d (Calculator_Activity.TAG, "+ onStart");
super.onStart();
final android.content.Intent intent = getIntent();
if (intent != null)
{
android.util.Log.d (Calculator_Activity.TAG, "> Got intent : " + intent);
final android.net.Uri data = intent.getData();
if (data != null)
{
android.util.Log.d (Calculator_Activity.TAG, "> Got data : " + data);
final String filePath = data.getEncodedPath();
android.util.Log.d (Calculator_Activity.TAG, "> Open file : " + filePath);
// file loading comes here.
} // if
} // if
android.util.Log.d (Calculator_Activity.TAG, "- onStart");
return;
} // onStart
樣本中缺少實際的文件加載。它應該在「打開文件」日誌命令之後插入。
我只是猜測,但你可以嘗試省略主機元素。另外,logcat可能會告訴你什麼樣的模式是'進來',以便您更好地瞭解系統正在尋找什麼。 – 2011-01-26 21:14:24