2015-09-23 2 views
0

Мне сложно определить, что здесь не так. Я получил деятельность с этим намерением фильтра в нем:Uri.parse и Uri.Builder дают тот же uri, но другой результат

<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="launcher" 
     android:host="custo" 
     /> 
    </intent-filter> 

Я успешно начать свою деятельность, делая (пути и параметры обрабатываются далее в коде):

context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("launcher://custo/3dw?iuid=06eec76c-f48e-4961-870e-4b27495f8201")); 

Но это не один работа:

Uri uri = new Uri.Builder().scheme("launcher").appendEncodedPath("/custo").appendPath("3dw").appendQueryParameter("iuid", "f6f18a3d-14f9-4969-8a24-8130f4cad5d1").build(); 
context.startActivity(new Intent(Intent.ACTION_VIEW, uri); 

Ошибка:

не может запускать активность с намерением «act = ... action.VIEW dat =» launcher: // custo/3dw? Iuid = 06eec76c-f48e-4961-870e-4b27495f8201 »(это одна и та же строка, которую я разбираю).

Что случилось?

ответ

1

Во втором примере ваш Uri не имеет authority, который должен искать каркас. Похоже, действительный Uri на первом, но вместо того, чтобы дать полномочия, вы даете путь, который делает ваш Uri выглядеть следующим образом (обратите внимание на недостающую / после схемы):

запуска:/Custo/3DW IUID = f6f18a3d-14f9-4969-8a24-8130f4cad5d1

Ваше заявление должно быть:

new Uri.Builder() 
    .scheme("launcher") 
    .authority("custo") 
    .appendPath("3dw") 
    .appendQueryParameter("iuid", "f6f18a3d-14f9-4969-8a24-8130f4cad5d1") 
    .build(); 
+0

Вот так, спасибо много. – ValPar

Смежные вопросы