Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Diskobolos 11. 03. 2015, 16:20:25
-
Zdravím všechny. Byl jsem nucen nastudovat vývoj aplikací pro android. Vše jsem tak nějak zvládl. Princip je ten, že hlavní aplikace je z nějakého důvodu v HTML (offline režim) a pro potřeby vstupu chci spouštět nativní androidí aplikaci. Tu jsem sesmolil, odladil a dle různých rad (např. z http://stackoverflow.com/questions/2448213/how-to-implement-my-very-own-uri-scheme-on-android) jsem upravil svůj AndroidManifest.xml. Problém je ten, že i když mám v manifestu
<intent-filter>,
resp. uvnitř <data android:scheme="myapp" android:host="my.path"/>
, tak generovaný odkaz v HTML <a href="myapp://my.path:123456">načti vstupy</a>
nefunguje (chrome hlásí, že url myapp://my.path:123456 není dostupné). Progoogloval jsem všelico a systémem pokus/omyl zkoušel také všelico, ale nic nezafungovalo. Může mi někdo podat vysvětlení s funkční ukázkou. Děkuji mnohokráte.
Obsah manifestu:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:debuggable="true"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<data android:scheme="myapp" android:host="my.path"/>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
-
Tezko rict, ale mas tam internet permission?
-
Prohlížeč používá akci android.intent.action.VIEW, MAIN je pro launcher.
-
Prohlížeč používá akci android.intent.action.VIEW, MAIN je pro launcher.
Díky Stene, to jsem si i myslel. Nicméně jak udelám z MAIN ono VIEW. Když to přepíšu a spustím kód, tak mi to hlásí chybu "Error: Default Activity not found". Díky za nakopnutí.
-
Prohlížeč používá akci android.intent.action.VIEW, MAIN je pro launcher.
Díky Stene, to jsem si i myslel. Nicméně jak udelám z MAIN ono VIEW. Když to přepíšu a spustím kód, tak mi to hlásí chybu "Error: Default Activity not found". Díky za nakopnutí.
Musite v Manifestu specifikovat jednu Activity jako Launcher:
<activity
android:name="com.your.package.name.YourActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
-
Prohlížeč používá akci android.intent.action.VIEW, MAIN je pro launcher.
Díky Stene, to jsem si i myslel. Nicméně jak udelám z MAIN ono VIEW. Když to přepíšu a spustím kód, tak mi to hlásí chybu "Error: Default Activity not found". Díky za nakopnutí.
Protože mícháte dva různé intent filtry dohromady:
<activity …>
<!-- Tohle je pro launcher (spouštěč aplikací) -->
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<!-- Tohle je pro prohlížeč -->
<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="myapp" android:host="my.path"/>
</intent-filter>
</activity>
Btw. pokud filtr obsahuje vaše vlastní schéma, je většinou zbytečné filtrovat i podle hostitele (android:host), protože stejně nikdo jiný to schéma používat nebude. Filtrování podle hostitele (a cesty) se používá spíš pro filtr pro běžná schémata jako http a https, kde bez vaší aplikace zobrazíte stránku, odkud se dá stáhnout, a s vaší aplikací spustíte nějakou akci.