The task of this application is to implicitly activate a separate application to view the URL, “http:// www.google.com”. So, App Chooser should appear and let me choose betw
Seriously, you have a GUI editor for manifest.
This
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" />
<category android:name="android.intent.category.BROWSABLE" />
should placed in <intent-filter>
tag, as you already can see in your manifest.
Like this:
<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>
That is how it done in default browser:
<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>
Here's how I am doing:
Step 1: First in the strings,
<string name="webklink"><a href="http://www.google.com">SomeLink</a></string>
Step 2: My Layout:
<?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>
Step 3: Getting the link from the strings.
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)));
}
}
}
Hope this helps..:)
Easy implementation of multiple actions app chooser:
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);
You have to run lab3a_MyBrowser
before you run lab3a_IntentsLab
, so that the browser gets installed on your phone. Then it will be visible to your chooser.
Seems like the Adam Porter's Third Week Assignment of Programming mobile Application for Android HandHeld systems. Anyway, I hope you have your solution inside the AndroidManifest.xml you would need to add three more intent filters.
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
Further, if you were not able to run the AndroidUnit tests,
make sure you have done something similar to this in the ActionListener of the implicit button call.
Intent baseIntent = new Intent(Intent.ACTION_VIEW);
baseIntent.setData(Uri.parse(URL));
Intent chooserIntent = Intent.createChooser(baseIntent, "Select Application");
Coursera already has a mailing list. Please use that.