此应用程序的任务是隐式激活单独的应用程序以查看URL“http:// www.google.com”。因此,App Chooser应该出现,让我在至少两个浏览器之间进行选择:默认的一个,它将显示www.google.com网站,另一个简单的“浏览器”,它只显示我的网址。 问题是 - 当我使用隐式活动时,App选择器不会出现。可能我为第二个“简单浏览器”编写了错误的意图过滤器。
private void startImplicitActivation() {
Log.i(TAG, "Entered startImplicitActivation()");
// TODO - Create a base intent for viewing a URL
// (HINT: second parameter uses parse() from the Uri class)
Uri adress = Uri.parse(URL);
Intent intentUrlView = new Intent(Intent.ACTION_VIEW, adress);
// TODO - Create a chooser intent, for choosing which Activity
// will carry out the baseIntent. Store the Intent in the
// chooserIntent variable below. HINT: using the Intent class'
// createChooser())
Intent chooserIntent = Intent.createChooser(intentUrlView, CHOOSER_TEXT);
//chooserIntent = null;
Log.i(TAG,"Chooser Intent Action:" + chooserIntent.getAction());
// TODO - Start the chooser Activity, using the chooser intent
if (intentUrlView.resolveActivity(getPackageManager()) != null) {
startActivity(chooserIntent);
}
}
清单
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="course.labs.intentslab.mybrowser"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MyBrowserActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- TODO - Add necessary intent filter information so that this
Activity will accept Intents with the
action "android.intent.action.VIEW" and with an "http"
schemed URL -->
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" />
<category android:name="android.intent.category.BROWSABLE" />
</activity>
</application>
答案 0 :(得分:18)
似乎是Adam Porter为Android HandHeld系统编写编程移动应用程序的第三周作业。 无论如何,我希望你有解决方案 在AndroidManifest.xml中,您需要再添加三个intent过滤器。
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
此外,如果您无法运行AndroidUnit测试,
确保在隐式按钮调用的ActionListener中做了类似的操作。
Intent baseIntent = new Intent(Intent.ACTION_VIEW);
baseIntent.setData(Uri.parse(URL));
Intent chooserIntent = Intent.createChooser(baseIntent, "Select Application");
Coursera已经有了一个邮件列表。请使用它。
答案 1 :(得分:8)
说真的,你有一个清单的GUI编辑器。
此
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" />
<category android:name="android.intent.category.BROWSABLE" />
应放在<intent-filter>
标记中,正如您已在清单中看到的那样。
像这样:
<activity
android:name=".MyBrowserActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- TODO - Add necessary intent filter information so that this
Activity will accept Intents with the
action "android.intent.action.VIEW" and with an "http"
schemed URL -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
这就是在默认浏览器中完成的方式:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="about" />
<data android:scheme="javascript" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="inline" />
<data android:scheme="file" />
<data android:mimeType="text/html" />
<data android:mimeType="text/plain" />
<data android:mimeType="application/xhtml+xml" />
<data android:mimeType="application/vnd.wap.xhtml+xml" />
</intent-filter>
答案 2 :(得分:1)
轻松实施多项操作应用选择器:
Intent phoneCall=new Intent(Intent.ACTION_DIAL,Uri.fromParts("tel",contactNumber,null));
//Intent sms=new Intent(Intent.ACTION_VIEW,Uri.parse("sms:"+contactNumber));
Intent whatsapp=new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+contactNumber));
Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
builder.appendPath("time");
ContentUris.appendId(builder, Calendar.getInstance().getTimeInMillis());
Intent calendarIntent = new Intent(Intent.ACTION_VIEW).setData(builder.build());
Intent chooser=Intent.createChooser(whatsapp,"chooser??");//default action
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS,new Intent[]{phoneCall,calendarIntent});//additional actions
startActivity(chooser);
答案 3 :(得分:0)
以下是我的工作方式:
第1步:字符串中的第一个
<string name="webklink"><a href="http://www.google.com">SomeLink</a></string>
第2步:我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/webklink"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
第3步:从字符串中获取链接。
public class OpenWeb extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.webopen);
TextView someLink = (TextView)findViewById(R.id.textView1);
if(someLink!=null){
someLink.setMovementMethod(LinkMovementMethod.getInstance());
someLink.setText(Html.fromHtml(getResources().getString(R.string.webklink)));
}
}
}
希望这会有所帮助.. :)
答案 4 :(得分:0)
您必须在运行lab3a_MyBrowser
之前运行lab3a_IntentsLab
,以便在手机上安装浏览器。然后,您的选择器将可以看到它。