• Stars
    star
    474
  • Rank 92,640 (Top 2 %)
  • Language
    Java
  • License
    MIT License
  • Created over 11 years ago
  • Updated over 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Routable, an in-app native URL router, for Android

Routable

Routable is an in-app native URL router, for Android. Also available for iOS.

Usage

Set up your app's router and URLs:

import com.usepropeller.routable.Router;

public class PropellerApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        
        // Set the global context
        Router.sharedRouter().setContext(getApplicationContext());
        // Symbol-esque params are passed as intent extras to the activities
        Router.sharedRouter().map("users/:id", UserActivity.class);
        Router.sharedRouter().map("users/new/:name/:zip", NewUserActivity.class);
    }
}

In your Activity classes, add support for the URL params:

import com.usepropeller.routable.Router;

public class UserActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Bundle intentExtras = getIntent().getExtras();
        // Note this extra, and how it corresponds to the ":id" above
        String userId = intentExtras.get("id");
    }
}

public class NewUserActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Bundle intentExtras = getIntent().getExtras();
        // Corresponds to the ":name" above
        String name = intentExtras.get("name");
        // Corresponds to the ":zip" above
        String zip = intentExtras.get("zip");
    }
}

Anywhere else in your app, open some URLs:

// starts a new UserActivity
Router.sharedRouter().open("users/16");
// starts a new NewUserActivity
Router.sharedRouter().open("users/new/Clay/94303");

Installation

Routable is currently an Android library project (so no Maven).

If you're in a hurry, you can just copy-paste the Router.java file.

Or if you're being a little more proactive, you should import the Routable project (this entire git repo) into Eclipse and reference it in your own project.

Features

Routable Functions

You can call arbitrary blocks of code with Routable:

Router.sharedRouter().map("logout", new Router.RouterCallback() {
    public void run(Router.RouteContext context) {
        User.logout();
    }
});

// Somewhere else
Router.sharedRouter().open("logout");

Open External URLs

Sometimes you want to open a URL outside of your app, like a YouTube URL or open a web URL in the browser. You can use Routable to do that:

Router.sharedRouter().openExternal("http://www.youtube.com/watch?v=oHg5SJYRHA0")

Multiple Routers

If you need to use multiple routers, simply create new instances of Router:

Router adminRouter = new Router();

Router userRouter = new Router();

Contact

Clay Allsopp (http://clayallsopp.com)

License

Routable for Android is available under the MIT license. See the LICENSE file for more info.

More Repositories

1

routable-ios

Routable, an in-app native URL router, for iOS
Objective-C
1,815
star
2

react.backbone

Plugin for React to make Backbone migration easier
JavaScript
840
star
3

formotion

Making iOS Forms insanely great with RubyMotion
Ruby
609
star
4

graphqlhub

The GraphQLHub Server
JavaScript
402
star
5

ShotBlocker

Detecting iOS screenshots ala Snapchat and Facebook Poke
Objective-C
257
star
6

rubymotion-tutorial

RubyMotion-Tutorial
Ruby
211
star
7

Walt

Fast, frictionless iOS animations
Ruby
144
star
8

HybridKit-iOS

HybridKit for iOS
Objective-C
126
star
9

remote_model

JSON API <-> NSObject via RubyMotion
Ruby
97
star
10

geomotion

Better iOS Geometry with RubyMotion
Ruby
90
star
11

Routable

A RubyMotion UIViewController -> URL router
Ruby
86
star
12

graphql-intro

JavaScript
86
star
13

react-vr

Write VR web apps with React JS
JavaScript
83
star
14

motion-toolbox.com

The Motion-Toolbox website
CSS
79
star
15

relay-101

Relay 101
JavaScript
48
star
16

HybridKit-JS

HybridKit for JavaScript
JavaScript
45
star
17

motion-screenshots

Automatic screenshots for your RubyMotion apps
Ruby
41
star
18

twittermotion

RubyMotion wrapper for the iOS Twitter API
Ruby
40
star
19

readme-score

Giving a score to README.md's everywhere
Ruby
40
star
20

motion-smarticons

Automatically generate icon labels for RubyMotion apps
Ruby
39
star
21

maglev

Faster, smoother iOS development
Ruby
36
star
22

motion-require

Dependency management for RubyMotion, using a pseudo `require`
Ruby
34
star
23

motion-env

Sync ENV variables between Rakefile and RubyMotion
Ruby
31
star
24

applebot

Automating iTunes Connect and the iOS Developer Center
JavaScript
31
star
25

react-native-remote-component

Load React Native components over the network
Objective-C
27
star
26

VolumeCamera

iPhone app where camera is triggered by volume buttons
Objective-C
26
star
27

urlp

A command-line URL parser, written in Rust
Rust
22
star
28

CLAFluxDispatcher

A port of Facebook's Flux Dispatcher to Objective-C
Objective-C
22
star
29

mixing-objc-ruby

Mixing Objective-C and Ruby with RubyMotion
Objective-C
20
star
30

typescript-1.8-tutorial

Migrating a JavaScript app to TypeScript 1.8
JavaScript
20
star
31

motion-colorize

Add some color to your RubyMotion output
Ruby
17
star
32

motion-screenspecs

Test your RubyMotion app using screenshot comparison
Ruby
17
star
33

graphql-unions-interfaces

JavaScript
13
star
34

appleload

CLI & Ruby Library to control Apple's Application Loader app
Ruby
12
star
35

motion-weakattr

weak_attr for WeakRefs in RubyMotion
Ruby
10
star
36

appleslice

Easily parse Apple & iTunes Connect emails
Ruby
7
star
37

motion-http

Cross-platform HTTP library for RubyMotion
7
star
38

BrocabularyTutorial

The source to the Android App From Scratch tutorials
Java
7
star
39

relay-102

Relay with Mutations! Powered by GraphQLHub
JavaScript
6
star
40

plottable-examples

HTML
5
star
41

afmotion-rocket

AFMotion extensions for Rocket
Ruby
5
star
42

CYStoreExample

Magically easy in-app purchases on iOS.
Objective-C
4
star
43

MotionCorePlot

Ruby
3
star
44

graphql-directives

JavaScript
3
star
45

motion-tips

Motion Tips blog dump.
Ruby
3
star
46

gumroad-ruby

Ruby binding for Gumroad API
Ruby
3
star
47

smashing-rubymotion

Source code to Smashing's RubyMotion example
Ruby
3
star
48

droidproj

Manage Android projects with a Droidfile
Ruby
2
star
49

readme-score-api

The API for readme-score
Go
2
star
50

FormotionTest

Tests
Ruby
2
star
51

WebActivity

Drop-in Activity to browse the web
Java
1
star
52

new-news

TypeScript
1
star
53

botlib

The shared library for AppleBot and PlayBot
Ruby
1
star
54

clayallsopp.github.com

1
star