How to start and App Chooser

前端 未结 5 1028
春和景丽
春和景丽 2021-01-13 07:09

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

相关标签:
5条回答
  • 2021-01-13 07:20

    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>
    
    0 讨论(0)
  • 2021-01-13 07:29

    Here's how I am doing:

    Step 1: First in the strings,

    <string name="webklink">&lt;a href="http://www.google.com">SomeLink&lt;/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..:)

    0 讨论(0)
  • 2021-01-13 07:38

    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);
    
    0 讨论(0)
  • 2021-01-13 07:45

    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.

    0 讨论(0)
  • 2021-01-13 07:46

    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.

    0 讨论(0)
提交回复
热议问题