Запуск приложения Android из Браузер

Я просмотрел несколько вопросов о переполнении стека с похожими названиями. На каждый из них дан ответ, и первоначальный автор, кажется, удовлетворен, но когда я пытаюсь воспроизвести их результаты, я получаю с пустыми руками. Очевидно, я делаю что-то ужасно неправильное, но, кажется, не могу понять этого.

Для справки, это вопросы, на которые я смотрел:

В конечном итоге я хочу использовать это для перезапуска моего приложения после того, как пользователь выполнил запрос аутентификации OAuth. Однако мое настоящее приложение слишком велико для публикации здесь. Для этого вопроса я собрал простое приложение, чтобы показать вам, что я сделал. У меня два занятия. Это главным образом потому, что каждый пример, который я видел, использует действие с действием VIEW. Я бы предпочел использовать действие MAIN, но я использовал оба здесь, чтобы показать, что пробовал оба.

AndroidManifest.xml (Оригинал; см. Отредактированную версию ниже)




    
        
            
            
            
        
    
    
        
            
            
        
    

AndroidManifest.xml (Отредактировано в ответ на комментарий)




    
        
            
            
        
    
    
        
            
            
            
            
        
    

main. xml



HelloAndroidActivity.java

package org.example;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroidActivity extends Activity {

    private TextView textView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView) findViewById(R.id.textView);
    }

    @Override
    public void onResume() {
        super.onResume();
        Intent intent = getIntent();
        Uri data = intent.getData();
        if (data != null) {
            textView.setText("Hello Web!");
        }
    }

}

CallbackActivity.java

package org.example;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;

public class CallbackActivity extends Activity {

    private TextView textView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView) findViewById(R.id.textView);
    }

    @Override
    public void onResume() {
        super.onResume();
        Intent intent = getIntent();
        Uri data = intent.getData();
        if (data != null) {
            textView.setText("Hello Web!");
        }
    }

}

Сборка выполняется достаточно успешно. Затем внутри браузера, если я ввожу ex1: // helloworld или ex2: // helloworld, я получаю разные результаты в зависимости от того, как это делается. Если я введу его в адресную строку, я получу поиск в Google по запросу ex1: // helloworld. Если я сделаю это через перенаправление, я получаю сообщение «Веб-страница недоступна». Если я попытаюсь запустить намерение напрямую с чего-то вроде:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    ComponentName componentName = new ComponentName(
            "org.example",
            "org.example.HelloAndroidActivity");
    intent.setComponent(componentName);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setData(Uri.parse("ex1://helloworld"));
    intent.addCategory(Intent.CATEGORY_BROWSABLE);
    startActivity(intent);

, я получаю по умолчанию «Hello my-example!». Я не уверен, что делаю неправильно. Есть какие-то идеи?

5
задан Community 23 May 2017 в 12:01
поделиться