以下是重构后的内容:
第一种方式,使用Action跳转。
1. 使用Action跳转时,如果一个程序的AndroidManifest.xml中的某一个Activity的IntentFilter段中定义了包含相同Action的Intent,那么这个Intent就与该目标Action匹配。如果这个IntentFilter段中没有定义Type和Category,那么这个Activity就匹配成功。但是,如果手机中有两个以上的程序都匹配成功,系统会弹出一个对话框提示用户选择。
2. 在Android系统中,有很多预定义的Action值。如果你想直接跳转到自定义的Intent接收者,可以在接收者的IntentFilter中加入一个自定义的Action值(同时要设定Category值为"android.intent.category.DEFAULT"),然后在你的Intent中设定该值为Intent的Action,就可以直接跳转到自定义的Intent接收者中。因为这个Action在系统中是唯一的。
3. 另外,你还可以使用Uri作为data。例如,创建一个Uri对象uri = Uri.parse("http://www.google.com"),然后创建一个Intent对象i = new Intent(Intent.ACTION_VIEW, uri)。在手机的Intent分发过程中,系统会根据"http://www.google.com"的scheme判断出数据类型type。手机的浏览器可以匹配这个数据类型,并在浏览器的Manifest.xml中的IntentFilter中首先有ACTION_VIEW Action,也能处理http类型的数据。
4. 关于分类Category,一般情况下不需要在Intent中设置它。如果你需要设置Intent的接收者,可以在Manifest.xml中对应Activity的IntentFilter中包含android.category.DEFAULT。这样,所有不设置Category(Intent.addCategory(String c);)的Intent都会与这个Category匹配。
以下是重构后的代码:
```java
package com.android.edit_text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MyEditText extends Activity {
private TextView mTextView;
private EditText mEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.TextView01);
mEditText = (EditText) findViewById(R.id.EditText01);
mEditText.setOnKeyListener(editTextKeyListener);
}
private final View.OnKeyListener editTextKeyListener = new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// action跳转,需要在AndroidManifest.xml中配置action
Intent i = new Intent("android.intent.action.mydialog");
startActivity(i);
return false;
}
};
}
```
请将以下内容重构为一个XML文件,并保持段落结构:
```xml
```
请根据提供的内容完成内容重构,并保持段落结构:
```xml
```
复制代码第二种方式,用类名跳转。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent在这里起着实现调用者与被调用者之间的解耦作用。
在Intent传递过程中,要找到目标消费者(另一个Activity,IntentReceiver或Service),也就是Intent的响应者。
以下是Java代码:
```java
package com.Android;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class FormStuff extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.formstuff);
final ImageButton button = (ImageButton) findViewById(R.id.android_button);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 用类名跳转,需要在AndroidManifest.xml中声明activity
Intent intent = new Intent(FormStuff.this, HelloTabWidget.class);
startActivity(intent);
}
});
}
}
```
根据你提供的内容,我为你生成了以下的重构代码:
```java
package="com.Android" android:versionCode="1" android:versionName="1.0"> android:theme="@android:style/Theme.NoTitleBar"> android:label="@string/app_name">
```
一些常用Intent的Java代码示例:
显示网页:
```java
// Uri uri = Uri.parse("http://google.com");
// Intent it = new Intent(Intent.ACTION_VIEW, uri);
```
显示地图:
1. 创建Uri对象,包含经纬度坐标信息:
```java
Uri uri = Uri.parse("geo:38.899533,-77.036476");
```
2. 创建Intent对象,设置其动作为ACTION_VIEW,并将Uri对象传入:
```java
Intent it = new Intent(Intent.ACTION_VIEW, uri);
```
3. 启动Intent:
```java
startActivity(it);
```
其他geo URI示例:
- geo:latitude,longitude
- geo:latitude,longitude?z=zoom
- geo:0,0?q=my+street+address
- geo:0,0?q=business+near+city
- google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom
路径规划:
1. 创建Uri对象,包含起始和结束经纬度坐标信息:
```java
Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat startLng&daddr=endLat endLng&hl=en");
```
2. 创建Intent对象,设置其动作为ACTION_VIEW,并将Uri对象传入:
```java
Intent it = new Intent(Intent.ACTION_VIEW, uri);
```
3. 启动Intent:
```java
startActivity(it);
```
其中startLat和startLng、endLat和endLng是长整型数值,格式如:50.123456。
打电话:
1. 调用拨号程序(如Android系统自带的拨号程序):
```java
// 叫出拨号程序
Uri uri = Uri.parse("tel:0800000123");
Intent it = new Intent(Intent.ACTION_DIAL, uri);
startActivity(it);
```
2. 直接拨打电话:
```java
// 直接拨打电话出去
Uri uri = Uri.parse("tel:0800000123");
Intent it = new Intent(Intent.ACTION_CALL, uri);
startActivity(it);
```
请根据提供的内容完成内容重构,并保持段落结构:
在 AndroidManifest.xml 中添加权限:
1. 发送 SMS/MMS 短信:
2. 调用短信程序:
a. 创建 Intent 对象,设置动作为 VIEW,URI 为 uri。
b. 向 Intent 对象中添加额外信息:sms_body 为 "The SMS text"。
c. 将 Intent 对象的类型设置为 "vnd.android-dir/mms-sms"。
d. 启动 Intent。
3. 传送消息:
a. 创建 Uri 对象,将 "smsto://0800000123" 作为参数传入。
b. 创建 Intent 对象,设置动作为 SENDTO,URI 为刚刚创建的 Uri。
c. 向 Intent 对象中添加额外信息:sms_body 为 "The SMS text"。
d. 启动 Intent。
4. 传送 MMS:
a. 创建 Uri 对象,将 "content://media/external/images/media/23" 作为参数传入。
b. 创建 Intent 对象,设置动作为 SEND。
c. 向 Intent 对象中添加额外信息:sms_body 为 "some text"。
d. 将额外信息中的信息类型更改为图片流,使用之前创建的 Uri。
e. 将 Intent 对象的类型设置为 "image/png"。
f. 启动 Intent。
5. 传送 Email:
6. 创建 Uri 对象,将 "mailto:xxx@abc.com" 作为参数传入。
7. 创建 Intent 对象,设置动作为 SENDTO,URI 为刚刚创建的 Uri。
8. 直接启动 Intent。
. 创建一个Intent对象,设置其动作为ACTION_SEND:
```java
Intent it = new Intent(Intent.ACTION_SEND);
```
2. 添加收件人地址:
```java
String[] tos = {"me@abc.com"};
it.putExtra(Intent.EXTRA_EMAIL, tos);
```
3. 添加抄送地址:
```java
String[] ccs = {"you@abc.com"};
it.putExtra(Intent.EXTRA_CC, ccs);
```
4. 添加邮件正文:
```java
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
```
5. 设置邮件类型:
```java
it.setType("text/plain");
```
6. 通过Intent.createChooser()方法选择发送邮件的应用:
```java
startActivity(Intent.createChooser(it, "Choose Email Client"));
```
7. 如果要发送带附件的邮件,可以按照以下步骤操作:
8. 创建一个Intent对象,设置其动作为ACTION_SEND:
```java
Intent it = new Intent(Intent.ACTION_SEND);
```
9. 添加邮件主题:
```java
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
```
10. 添加邮件正文流:
```java
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");
sendIntent.setType("audio/mp3");
```
以下是重构后的内容:
## 6. 播放多媒体
```java
// 通过邮件客户端选择应用进行邮件发送
startActivity(Intent.createChooser(it, "Choose Email Client"));
// 播放 MP3 文件
Uri uri = Uri.parse("file:///sdcard/song.mp3");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
it.setType("audio/mp3");
startActivity(it);
// 播放内部存储的音乐文件
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
```
## Market 相关操作
1. **寻找某个应用**:在应用市场中搜索特定应用。
2. **显示某个应用的相关信息**:通过点击应用在市场主页上的位置,查看应用的详情页。
3. **通过点击应用来查找 ID**:在市场主页上找到目标应用,从地址栏中查看其 ID。
4. **获取应用程序的完整包路径**:通过在市场主页上点击目标应用,并从地址栏中查看完整的包路径。例如:`market://details?id=app_id`
5. **获取应用程序的 ID**:在应用详情页中,查找应用程序的 ID。通常可以通过点击页面中的应用程序图标来获取该信息。
. 创建一个Intent对象,设置其动作为ACTION_DELETE。
2. 为Intent对象设置一个Uri,表示要删除的数据的来源。
3. 调用startActivity()方法启动该Intent,从而执行删除操作。