2010-03-25 2 views
0

패키지 설치를 확인한 다음 해당 ID로 마켓을 시작하는 응용 프로그램을 만들고 있습니다.안드로이드 마켓에 존재하지 않는 응용 프로그램의 ID가있는 시장 출시

응용 프로그램의 ID로 마켓 플레이스를 실행하려고하면 url : market : // details? id = com.mybrowser.android와 함께 android.intent.action.VIEW 인 텐트를 던져서 com.mybrowser.android라고 말하면서, 마켓 플레이스 응용 프로그램은 시작되지만 실행 후에는 중단됩니다.

참고 : com.mybrowser.android 응용 프로그램은 시장에 존재하지 않습니다.

MyApplication이 내 응용 프로그램입니다. 내가 말할 시장에서 존재하는 패키지의 시장 장소를 시작하려고 할 때 그러나

$ adb logcat 

I/ActivityManager(1030): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=myapp.testapp/.MyApplication } 
I/ActivityManager(1030): Start proc myapp.testapp for activity myapp.testapp/.MyApplication: pid=3858 uid=10047 gids={1015, 3003} 
I/MyApplication(3858): [ Activity CREATED ] 
I/MyApplication(3858): [ Activity STARTED ] 
I/MyApplication(3858): onResume 
D/dalvikvm(1109): GC freed 6571 objects/423480 bytes in 73ms 
I/MyApplication(3858): Pressed OK button 
I/MyApplication(3858): Broadcasting Intent: android.intent.action.VIEW, data: market://details?id=com.mybrowser.android 
I/ActivityManager(1030): Starting activity: Intent { act=android.intent.action.VIEW dat=market://details?id=com.mybrowser.android flg=0x10000000 cmp=com.android.ven 
ding/.AssetInfoActivity } 
I/MyApplication(3858): onPause 
I/ActivityManager(1030): Start proc com.android.vending for activity com.android.vending/.AssetInfoActivity: pid=3865 uid=10023 gids={3003} 
I/ActivityThread(3865): Publishing provider com.android.vending.SuggestionsProvider: com.android.vending.SuggestionsProvider 
D/dalvikvm(1030): GREF has increased to 701 
I/vending (3865): com.android.vending.api.RadioHttpClient$1.handleMessage(): Handle DATA_STATE_CHANGED event: NetworkInfo: type: WIFI[], state: CONNECTED/CO 
NNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true 
I/ActivityManager(1030): Displayed activity com.android.vending/.AssetInfoActivity: 609 ms (total 7678 ms) 
D/dalvikvm(1030): GC freed 10458 objects/676440 bytes in 128ms 
I/MyApplication(3858): [ Activity STOPPED ] 
D/dalvikvm(3865): GC freed 3538 objects/254008 bytes in 84ms 
W/dalvikvm(3865): threadid=19: thread exiting with uncaught exception (group=0x4001b180) 
E/AndroidRuntime(3865): Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception 
E/AndroidRuntime(3865): java.lang.RuntimeException: An error occured while executing doInBackground() 
E/AndroidRuntime(3865):  at android.os.AsyncTask$3.done(AsyncTask.java:200) 
E/AndroidRuntime(3865):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
E/AndroidRuntime(3865):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
E/AndroidRuntime(3865):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
E/AndroidRuntime(3865):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
E/AndroidRuntime(3865):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
E/AndroidRuntime(3865):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
E/AndroidRuntime(3865):  at java.lang.Thread.run(Thread.java:1096) 
E/AndroidRuntime(3865): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(3865):  at com.android.vending.AssetItemAdapter$ReloadLocalAssetInformationTask.doInBackground(AssetItemAdapter.java:845) 
E/AndroidRuntime(3865):  at com.android.vending.AssetItemAdapter$ReloadLocalAssetInformationTask.doInBackground(AssetItemAdapter.java:831) 
E/AndroidRuntime(3865):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
E/AndroidRuntime(3865):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
E/AndroidRuntime(3865):  ... 4 more 
I/Process (1030): Sending signal. PID: 3865 SIG: 3 
I/dalvikvm(3865): threadid=7: reacting to signal 3 
I/dalvikvm(3865): Wrote stack trace to '/data/anr/traces.txt' 
I/DumpStateReceiver(1030): Added state dump to 1 crashes 
D/AndroidRuntime(3865): Shutting down VM 
W/dalvikvm(3865): threadid=3: thread exiting with uncaught exception (group=0x4001b180) 
E/AndroidRuntime(3865): Uncaught handler: thread main exiting due to uncaught exception 
E/AndroidRuntime(3865): java.lang.NullPointerException 
E/AndroidRuntime(3865):  at com.android.vending.controller.AssetInfoActivityController.getIdDeferToLocal(AssetInfoActivityController.java:637) 
E/AndroidRuntime(3865):  at com.android.vending.AssetInfoActivity.displayAssetInfo(AssetInfoActivity.java:556) 
E/AndroidRuntime(3865):  at com.android.vending.AssetInfoActivity.access$800(AssetInfoActivity.java:74) 
E/AndroidRuntime(3865):  at com.android.vending.AssetInfoActivity$LoadAssetInfoAction$1.run(AssetInfoActivity.java:917) 
E/AndroidRuntime(3865):  at android.os.Handler.handleCallback(Handler.java:587) 
E/AndroidRuntime(3865):  at android.os.Handler.dispatchMessage(Handler.java:92) 
E/AndroidRuntime(3865):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(3865):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
E/AndroidRuntime(3865):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(3865):  at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(3865):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
E/AndroidRuntime(3865):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
E/AndroidRuntime(3865):  at dalvik.system.NativeStart.main(Native Method) 
I/Process (1030): Sending signal. PID: 3865 SIG: 3 
W/ActivityManager(1030): Process com.android.vending has crashed too many times: killing! 
D/ActivityManager(1030): Force finishing activity com.android.vending/.AssetInfoActivity 
I/dalvikvm(3865): threadid=7: reacting to signal 3 
D/ActivityManager(1030): Force removing process ProcessRecord{44e48548 3865:com.android.vending/10023} (com.android.vending/10023) 

, com.opera.mini.android, 모든 작동합니다. 이 경우의 로그인 :

D/dalvikvm( 966): GC freed 2781 objects/195056 bytes in 99ms 
I/MyApplication(1165): Pressed OK button 
I/MyApplication(1165): Broadcasting Intent: android.intent.action.VIEW, data: market://details?id=com.opera.mini.android 
I/ActivityManager( 78): Starting activity: Intent { act=android.intent.action.VIEW dat=market://details?id=com.opera.mini.android flg=0x10000000 cmp=com.android.vending/.AssetInfoActivity } 
I/AndroidRuntime(1165): AndroidRuntime onExit calling exit(0) 
I/WindowManager( 78): WIN DEATH: Window{44c72308 myapp.testapp/myapp.testapp.MyApplication paused=true} 
I/ActivityManager( 78): Process myapp.testapp (pid 1165) has died. 
I/WindowManager( 78): WIN DEATH: Window{44c72958 myapp.testapp/myapp.testapp.MyApplication paused=false} 
D/dalvikvm( 78): GC freed 31778 objects/1796368 bytes in 142ms 
I/ActivityManager( 78): Displayed activity com.android.vending/.AssetInfoActivity: 214 ms (total 22866 ms) 
W/KeyCharacterMap( 978): No keyboard for id 65540 
W/KeyCharacterMap( 978): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 
V/RenderScript_jni( 966): surfaceCreated 
V/RenderScript_jni( 966): surfaceChanged 
V/RenderScript( 966): setSurface 480 762 0x573430 
D/ViewFlipper( 966): updateRunning() mVisible=true, mStarted=true, mUserPresent=true, mRunning=true 
D/dalvikvm( 978): GC freed 10065 objects/624440 bytes in 95ms 

아이디어가 있으십니까?

+1

왜 당신이 시장에없는 응용 프로그램에 시장'Intent'를 시작하려고? – CommonsWare

답변

0

정확한 ID로 시작하는 대신 패키지로 검색하여 시도 할 수 있습니다.

의도 의도 = 새로운 의도 (Intent.ACTION_VIEW,
Uri.parse ("시장 : // 검색 Q = PNAME : com.package.package2.package3"));
startActivity (의도); 응용 프로그램에서 URL "org.rabold.android.puzzleblox : // 세부 ID = pname에? 시장"을 사용하여 마켓 앱의 세부 정보 페이지를 열려고 할 때

+0

다른 응용 프로그램의 시장을 시작하는 응용 프로그램을 작업 중입니다. 이상적으로이 응용 프로그램이 출시되기 전에 해당 응용 프로그램이 출시 될 것입니다. 내 응용 프로그램을 테스트하는 동안이 문제점을 발견했습니다. 마켓 플레이스는 어떤 조건에서도 충돌해서는 안됩니다. 아마, 그것은 사용자에게 오류를 보여줄 수 있습니다. 뭐가 잘못 되었나요? 감사합니다. – Gaurav

+0

알다시피 잘못된 정보를 보내면 마켓 앱이 중단 될 수 있습니다. 잘못된 정보로 인 텐트를 보내서 다른 Google 앱을 중단시키는 방법은 많이 있습니다. 나는 당신이 뭔가 잘못하고 있다고 생각하지 않지만, 전화 할 때 존재하지 않을 경우 검색을 사용하는 것이 더 낫다. –

3

나는 비슷한 문제가 있습니다.

이 같은 AnyCut 사용하여 바로 가기를 만들 수 있습니다

조치 : android.intent.action.VIEW 데이터 : 시장 : // 세부 ID = PNAME : org.rabold.android.puzzleblox 유형 :

잘 작동합니다.

그러나 위와 같은 Uri로 Market을 시작하는 버튼이있는 Android 애플리케이션을 만들면 Market 앱에서 다음과 같은 오류가 발생합니다. "주의 : 서버 오류가 발생했습니다. 다시 시도하거나 취소하고 이전 화면으로 돌아갑니다. "

내 버튼의 리스너의 코드는 다음과 같습니다

okButton = (Button) findViewById(R.id.okButton); 
okButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     Intent intent = new Intent(Intent.ACTION_VIEW, 
      Uri.parse("market://details?id=pname:org.rabold.android.puzzleblox")); 
      //Uri.parse("market://search?q=pname:org.rabold.android.puzzleblox")); 
      startActivity(intent); 
    } 
}); 

참고 위의 코드에서, 내가 대신 작동 후 '세부 정보'의 '검색'을 사용합니다. 완료되면 '내 시장'에서 내 앱을 사용할 수 있다는 것을 알고 있기 때문에 '검색'대신 '세부 정보'를 사용하고 싶습니다. 감사.

2

thnx Daniel, 귀하의 솔루션이 기기에서 제대로 작동하는지 확인할 수 있습니다.

@TPham : 올바른 URL로 시도해주세요 (추가 ID 전용). 올바른 ID도 전달합니다. 아래 예를 참조하십시오.

static final String APP_MARKET_URL = "market://details?id=com.wareninja.android.fotolicke"; 
Intent intent = new Intent(Intent.ACTION_VIEW, 
Uri.parse(APP_MARKET_URL)); 
startActivity(intent); 
3

업데이트!:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("market://details?id=com.example.android")); 
startActivity(intent); 

작품 완벽 :
는 "PNAME"를 사용하지 마십시오. 당

:
http://developer.android.com/distribute/googleplay/promote/linking.html#android-app

☮ ♥ ☺

+0

티가 동일한 앱에서 새로운 시각을 엽니 다. 새로운 앱으로 시장을 여는 방법은 무엇입니까? –

관련 문제