从其他Android应用程序接收数据只能运行一次

时间:2017-03-19 17:10:30

标签: java android android-intent

我正在尝试开发一个简单的应用程序,它从其他Android应用程序接收文本,然后打开浏览器。

我已按照此处的文档中所述实现了它: https://developer.android.com/training/sharing/receive.html

它有效但只有一次。 第一次从其他应用程序共享文本时,浏览器将正确打开。 但第二次只打开我的应用程序,而不是浏览器。

这可能是什么原因?

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Get the intent that started this activity
        Intent intent = getIntent();
        // Get the action of the intent
        String action = intent.getAction();
        // Get the type of intent (Text or Image)
        String type = intent.getType();
        // When Intent's action is 'ACTION+SEND' and Type is not null
        if (Intent.ACTION_SEND.equals(action) && type != null) {
            // When tyoe is 'text/plain'
            if ("text/plain".equals(type)) {
                handleSendText(intent); // Handle text being sent
            }
        }

    }

    private void handleSendText(Intent intent) {
        // Get the text from intent
        String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
        if (sharedText != null) {
            openBrowser(sharedText);
        }

    }

    private void openBrowser(String text) {

            Toast.makeText(this, text, Toast.LENGTH_LONG).show();

            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://example.com/api.php?text=" + text));
            startActivity(browserIntent);

    }

}

1 个答案:

答案 0 :(得分:0)

openBrowser方法是通过handleSendText方法调用onCreate方法,第二次打开你的应用时(如果你没有按后退按钮)你的应用已经创造了!所以代码永远不会执行。

请检查以下

的Android活动的生命周期

Android Activity life cycle

您可以修改代码并在openBrowser方法上调用onResume方法,或者只需按一下按钮即可调用方法openBrowser Oncliking the button。