隐式intent调用浏览器
时间: 2023-10-06 08:11:34 浏览: 178
通过发送隐式Intent,我们可以调用系统默认的浏览器来打开一个网页链接。在Android程序中,可以通过以下代码实现:
```java
Uri webpage = Uri.parse("http://www.example.com");
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
startActivity(intent);
```
这段代码会创建一个隐式Intent,并将其动作设置为ACTION_VIEW,然后通过setData方法将要打开的网页链接传递给Intent。最后,调用startActivity方法来启动浏览器。
另外,如果手机安装了多个浏览器而没有设置默认浏览器的话,系统将会弹出对话框让用户选择使用哪个浏览器来打开链接。
相关问题
3)隐式Intent的应用 基于隐式Intent启动系统自带的应用,如拨号程序。
在Android开发中,可以使用隐式Intent启动系统自带的应用程序。以启动拨号程序为例,具体实现方法如下:
1. 创建一个Intent对象,并设置Action为ACTION_DIAL,Data为需要拨打的电话号码。
```
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:10086"));
```
2. 调用startActivity()方法启动拨号程序。
```
startActivity(intent);
```
这样就可以通过隐式Intent启动系统自带的拨号程序了。其中,ACTION_DIAL是拨号程序的Action,tel:10086是需要拨打的电话号码。
类似地,可以使用其他的Action启动其他系统自带的应用程序,例如ACTION_SEND启动发送邮件程序,ACTION_VIEW启动浏览器程序等等。需要注意的是,使用隐式Intent启动其他应用程序,需要保证应用程序已经在设备上安装,并且在AndroidManifest.xml文件中注册了相应的Intent Filter。
1. 编程实现Intent的显示跳转。在MainActivity中定义Intent,启动SeconActivity,能够获取SecondActivity的返回值; 2、使用Intent过滤器实现隐式跳转。在MainActiviy中定义Intent,要求必须用到自定义的action、category、data来启动ThirdActivity; 3. 实现通过Intent调用android内置浏览器; 4. 通过Intent实现广播消息的接收。在MainActivity中定义Intent,将界面上某文本框中的内容以广播消息的形式发出。广播消息可以使用Toast或Logcat。
1. 显示跳转并获取返回值:
在 MainActivity 中定义 Intent,并使用 startActivityForResult() 方法启动 SecondActivity。在 SecondActivity 中设置返回结果,并使用 setResult() 方法返回结果。在 MainActivity 中重写 onActivityResult() 方法获取返回结果。
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 1;
private TextView resultTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button goToSecondButton = findViewById(R.id.go_to_second_button);
resultTextView = findViewById(R.id.result_text_view);
goToSecondButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
String result = data.getStringExtra(SecondActivity.EXTRA_RESULT);
resultTextView.setText(result);
}
}
}
```
SecondActivity.java:
```java
public class SecondActivity extends AppCompatActivity {
public static final String EXTRA_RESULT = "com.example.myapplication.RESULT";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Button returnButton = findViewById(R.id.return_button);
returnButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String result = "Hello, MainActivity!";
Intent intent = new Intent();
intent.putExtra(EXTRA_RESULT, result);
setResult(RESULT_OK, intent);
finish();
}
});
}
}
```
2. 使用 Intent 过滤器实现隐式跳转:
在 MainActivity 中定义 Intent,并设置自定义的 action、category、data。在 ThirdActivity 的 AndroidManifest.xml 文件中使用 intent-filter 元素来指定响应的 Intent。
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button goToThirdButton = findViewById(R.id.go_to_third_button);
goToThirdButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("com.example.myapplication.ACTION_THIRD");
intent.addCategory("com.example.myapplication.CATEGORY_THIRD");
intent.setData(Uri.parse("https://www.example.com"));
startActivity(intent);
}
});
}
}
```
ThirdActivity 的 AndroidManifest.xml:
```xml
<activity android:name=".ThirdActivity">
<intent-filter>
<action android:name="com.example.myapplication.ACTION_THIRD" />
<category android:name="com.example.myapplication.CATEGORY_THIRD" />
<data android:scheme="https" android:host="www.example.com" />
</intent-filter>
</activity>
```
ThirdActivity.java:
```java
public class ThirdActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
}
}
```
3. 通过 Intent 调用 Android 内置浏览器:
在 MainActivity 中定义 Intent,并使用 setData() 方法设置要打开的网址。然后使用 startActivity() 方法启动隐式 Intent,Android 系统会自动选择合适的应用程序打开该网址。
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button openBrowserButton = findViewById(R.id.open_browser_button);
openBrowserButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "https://www.example.com";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
}
}
```
4. 通过 Intent 实现广播消息的接收:
在 MainActivity 中定义 Intent,并使用 sendBroadcast() 方法将广播消息发送出去。然后在 BroadcastReceiver 的 onReceive() 方法中接收广播消息,并使用 Toast 或 Logcat 打印出来。
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
public static final String ACTION_MY_BROADCAST = "com.example.myapplication.ACTION_MY_BROADCAST";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button sendBroadcastButton = findViewById(R.id.send_broadcast_button);
sendBroadcastButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText editText = findViewById(R.id.edit_text);
String message = editText.getText().toString();
Intent intent = new Intent(ACTION_MY_BROADCAST);
intent.putExtra("message", message);
sendBroadcast(intent);
}
});
}
}
```
MyBroadcastReceiver.java:
```java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("message");
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
Log.d("MyBroadcastReceiver", message);
}
}
```
AndroidManifest.xml:
```xml
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="com.example.myapplication.ACTION_MY_BROADCAST" />
</intent-filter>
</receiver>
```
阅读全文