2012-11-16 2 views
1

내 앱 사용자에게 zxing 바코드 스캐너를 사용할 수없는 경우 설치하도록 요청하고 싶습니다. 이것은 내가 대화를로드하고 응용 프로그램을 다운로드하는 사용자에게 물어 사용하고 코드이지만, 현재 '아무 작업 발견'관련 오류 반환되지 것 :Android에서 타사 앱 설치 시작

매니페스트 :

<activity 
    android:name=".FrontActivity" 
    android:label="@string/title_activity_front" 
    android:screenOrientation = "portrait" 
    android:theme="@style/NoTitleBar" > 

    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 

    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 

</activity> 

자바 :

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

     setContentView(R.layout.front_activity); 


     isScannerInstalled(); 
    } 

    private void isScannerInstalled() 
    { 
     try 
     { 
      ApplicationInfo info = 
       getPackageManager(). 
       getApplicationInfo("com.google.zxing.client.android",0); 
     } 

     catch (PackageManager.NameNotFoundException e) 
     { 
      AlertDialog.Builder alertDialogBuilder = 
       new AlertDialog.Builder(FrontActivity.this); 

      alertDialogBuilder.setTitle("Warning"); 
      alertDialogBuilder.setMessage("Please install the Barcode Scanner."); 
      alertDialogBuilder.setCancelable(false); 

      alertDialogBuilder.setNeutralButton 
      (
       "OK", 
       new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int whichButton) 
        { 
          Uri uri = Uri.parse(
          "market://search?q=pname:com.google.zxing.client.android" 
         ); 

          startActivity(new Intent(Intent.ACTION_VIEW, uri)); 
        } 
       } 
      ); 

      alertDialogBuilder.show(); 
     } 
    } 
} 

오류 :

11-16 08:37:37.716: E/AndroidRuntime(12694): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://search?q=pname:com.google.zxing.client.android } 
11-16 08:37:37.716: E/AndroidRuntime(12694): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at android.app.Activity.startActivityForResult(Activity.java:2817) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at android.app.Activity.startActivity(Activity.java:2923) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at test.app01.FrontActivity$1.onClick(FrontActivity.java:140) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at android.os.Looper.loop(Looper.java:123) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at java.lang.reflect.Method.invokeNative(Native Method) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at java.lang.reflect.Method.invoke(Method.java:521) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-16 08:37:37.716: E/AndroidRuntime(12694): at dalvik.system.NativeStart.main(Native Method) 

사람이 문제가 될 일을 볼 수 있을까요? 에뮬레이터는 시장 응용 프로그램을 가지고 있지 않기 때문에

+1

당신은 어떤 장치에서 실행중인? 에뮬레이터? 시장 URI는 'market : // details? id = com.google.zxing.client.android'여야합니다. Google Play가 설치되어 있지 않으면 Google Play에 연결되는 HTTP 버전의 ACTION_VIEW로 되돌아갑니다. – Jens

+0

감사합니다 Jens 많이 – Spoonface

답변

0

public void onClick(DialogInterface dialog, int whichButton) 
        { 
          try 
          { 
           startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+packageName))); 
           } 
         catch (android.content.ActivityNotFoundException err) 
         { 
          startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id="+packageName))); 
          } 
        } 

으로 시도하고 장치에서 테스트 ... ..

+0

실 거예요 고마워요? 웁스! 정보를 주셔서 감사합니다. 실제 장치를 파헤칩니다. – Spoonface