2014-02-19 1 views
0

내 앱의 경우 전자 메일 첨부 파일 또는 파일 브라우저에서 파일을 열어서 백그라운드에서 처리하도록하고 싶습니다. 성공/실패 피드백 나는 브로드 캐스트 리시버에서 이러한 필터를 배치하면File/Content Intent-filters가 BroadcastReceiver에서 작동하지 않습니다. 활동 내역

 <intent-filter> 
      <action android:name="android.intent.action.VIEW"/> 

      <category android:name="android.intent.category.DEFAULT"/> 
      <category android:name="android.intent.category.BROWSABLE"/> 

      <data android:mimeType="application/octet-stream"/> 
     </intent-filter> 

     <intent-filter> 
      <action android:name="android.intent.action.VIEW"/> 
      <action android:name="android.intent.action.EDIT"/> 

      <category android:name="android.intent.category.DEFAULT"/> 
      <category android:name="android.intent.category.BROWSABLE"/> 

      <data 
       android:mimeType="*/*" 
       android:host="*" 
       android:pathPattern=".*\\.mpb" 
       android:scheme="file"/> 
     </intent-filter> 

하지만, 안드로이드는 겉으로는 그 필터의 존재를 인정하기를 거부 : 나는 다음과 같은 의도 필터 설정을 가지고있다. 액티비티 아래에 똑같은 필터를 배치하면 제대로 작동합니다. Android 인 텐트 필터의 제한 사항입니까?

지금은 Activity를 사용하여 파일을 처리하는 IntentService에 인 텐트를 전달하기 만합니다. 내 BroadcastReceiver가 수행했던 것과 동일합니다. 그런 다음 finish()return;을 호출하십시오. 이렇게하면 작업이 완료되지만 활동이 즉시 나타나서 사라지기 때문에 사용자 경험이 좋지 않습니다. 오히려 BroadcastReceiver가 작동하도록 할 것이기 때문에 실종 된 것이 있습니까?

답변

1

거기에 뭔가가 있습니까? - 네, 두렵습니다.

같은 텐트 필터와 그 활동을 방송을 수신하지 않는 이유를 이렇게 캐치는 간단하다

(귀하의 예제에서의 Gmail 응용 프로그램)이 이벤트를 트리거 응용 프로그램 implicit activity을 시작하고, 방송을 전송하지 . 다음에 대해 대신 자신의 활동을 시작으로, 그 주위에 BroadcastReceiver

을 통해 어떤 일을받지 잊을 수 - 어떤 방송이 전송되지 않은 경우 것이 무엇을 의미하는지

.

ACTION_VIEW과 함께 브로드 캐스트를 보내는 대신 시작하는 것은 의미가 있습니다. 왜냐하면 결국 - ACTION_VIEW은 무엇인가를 보여주는 것이기 때문에 사용자가 파일을 클릭하면 반응이 일어나지 않을 것입니다 - 배경에서는 어떤 일이 일어날 것입니다. .

당신이 그 권리를 시작하고 imidatly이 경우에 나쁜 사용자 경험을 활동을 마무리하기,하지만 눈에 보이는 아무것도 표시되지 않는 것은 이벤트가 나쁘다 - 그는 아무 변화가 없다고 생각하기 때문에 사용자가 클릭 계속 ...

내가 대신에 할 것입니다 - 백그라운드에서 수행하는 대신 처리중인 것을 시각화하는 특별한 의미있는 활동을 표시하고 프로세스가 완료되면 활동을 마칩니다.

+0

고마워요. 제가 실제로 그랬던 의미있는 세부 사항에 대한 훌륭한 설명입니다. 매우 감사. – sigmabeta

+0

@sigmabeta : 다행스럽게 도와 줬어 : -> –