Почему мое приложение в списке приложений не открывает файл txt?

У меня есть приложение для чтения текста, которое предназначено для получения намерений от системы Android, когда я нажимаю на текстовый файл, чтобы открыть его. Но мое приложение не входит в список, который выдает система. Ниже приведены мои коды:

манифест

                       

Мой расширенный BroadcastReceiver

 public final class MyBroadcastReceiver extends BroadcastReceiver { private String TAG = "MyBroadcastReceiver"; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Intent i = new Intent(context, BroadcastReceiverTest1Activity.class); i.putExtra("URI", intent.getData()); context.startActivity(i); Log.d(TAG, "Leaving onReceived..."); } } 

Моя активность будет открыта широковещательным приемником

 public class BroadcastReceiverTest1Activity extends Activity { private String uri =""; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Intent intent = getIntent(); final String action = intent.getAction(); if(Intent.ACTION_VIEW.equals(action)){ uri = intent.getStringExtra("URI"); TextView textView = (TextView)findViewById(R.id.textView); textView.setText(uri); } } } 

Благодаря!

    Вам необходимо связать приложение с расширением файла. Чтобы сделать это, добавьте эти две строки в фильтр намерений, и вам хорошо идти

        

    И ваш манифест будет выглядеть так

               

    => определяют, что файл должен быть локальным, а не http или иначе

    => соответствует любому типу mime

    => Здесь вы указываете, какое расширение вы хотите сопоставить

    Надеюсь, что эта помощь

    разрабатывая псевдокод HERO, это эффективно работает:

    измените следующим образом:

                     

    снимите приемник вещания , потому что он не нужен.

    измените свой class BroadcastReceiverTest1Activity (он НЕ должен быть вашей основной деятельностью , см. BONUS ниже):

     import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.widget.TextView; public class BroadcastReceiverTest1Activity extends Activity { private String TAG = "TagOpenTxt"; private String uri =""; private Uri uri2; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Intent intent = getIntent(); final String action = intent.getAction(); if(Intent.ACTION_VIEW.equals(action)){ //uri = intent.getStringExtra("URI"); uri2 = intent.getData(); uri = uri2.getEncodedPath() + " complete: " + uri2.toString(); TextView textView = (TextView)findViewById(R.id.textView); textView.setText(uri); // now you call whatever function your app uses // to consume the txt file whose location you now know } else { Log.d(TAG, "intent was something else: "+action); } } } 

    вы эффективно создали приемник намерений для файлов TXT , который будет вызывать ваше приложение, если пользователь решит его использовать (если только пользователь ранее не связал тип файла TXT с другим приложением …)

    ваше приложение НЕ должно быть активным, чтобы поймать намерения. после установки система распознает его как одно из «приложений goto» для определенных типов и / или расширений mime (менее простое, чем сопоставление типом mime), которое вы выбрали.

    БОНУС: вы можете иметь отдельный MAIN-актив, и когда вызывается BroadcastReceiver, он будет выполняться в той же песочнице, что и ваше приложение, без воздействия на нее (вам придется реализовать это в методе onResume вашего MAIN).

    вы можете читать текстовые данные в статические переменные (sloppy) ИЛИ вы можете поместить их в SQLite db, который является постоянным и безопасным , независимо от приложения и / или закрытия телефона, например.

    вы могли бы активировать работу и даже не запускать макет / окно – что-то странное, если ваш пользователь хочет получить подтверждение о том, что файл txt был правильно и полностью поглощен приложением.

    Вам необходимо зарегистрировать ACTIVITY, а не широковещательный приемник с атрибутами фильтра.

    Давайте будем гением компьютера.